[英]Is it a good idea to use static or nonstatic? (Android)
我正在使用一個簡單的函數來執行從另一個靜態引用調用的HTTP朋友請求。 問題是Google提供的片段系統(“制表瀏覽器活動”)的預構建代碼不允許我在其中使用非靜態方法。
我稱之為方法的代碼
enviarsolicitud(param1,param2);
這是我說的空白代碼
private static void enviarsolicitud(final String idadder, final String idadded)
{
class EnviarSolicitudClass extends AsyncTask<String,Void,String>
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
System.out.println("enter");
}
@Override
protected void onPostExecute(String s)
{
super.onPostExecute(s);
if(s.contains("friendrequest")){
String[] friendrequest = s.split(":");
System.out.println(friendrequest[0] + " " + friendrequest[1]);
}
else if (s.contains("friendrequestcant"))
{
}
else
{
}
}
@Override
//En segon pla
protected String doInBackground(String... params)
{
HashMap<String,String> dades = new HashMap<>();
dades.put("idadder",params[0]);
dades.put("idadded",params[1]);
RegisterUserClass ruc = new RegisterUserClass();
String resultat = ruc.sendPostRequest("http://www.myurl.net/friend.php",dades);
return resultat;
}
}
EnviarSolicitudClass esc = new EnviarSolicitudClass();
esc.execute(idadder,idadded);
}
我對非靜態和靜態知識不甚了解,但問題是google使用靜態方法進行預建活動。 您是否建議對這種類型的空隙使用靜電? 我總是使用非靜態方法,因為靜態有很多限制
我認為這不是靜態與非靜態的問題。
您的問題是何時編寫/使用AsyncTask。 如果您使用的是HTTP方法,我的建議可能是切換到Volley或OkHttp,但是如果您想繼續沿這條路前進,請繼續閱讀。
建立介面
public interface StringCallback {
void onResponse(String result);
}
並向sendPostRequest
添加一個回調結果的參數,該參數接受POST響應。
private void enviarsolicitud(final String idadder, final String idadded) {
HashMap<String,String> dades = new HashMap<>();
dades.put("idadder",params[0]);
dades.put("idadded",params[1]);
RegisterUserClass ruc = new RegisterUserClass();
ruc.sendPostRequest("http://www.myurl.net/friend.php",dades,new StringCallback() {
@Override
public void onResponse(String response) {
// Continue with UI logic here
}
});
// Can't use HTTP response here
}
對於sendPostRequest
,您可以使用AsyncTask或所需的任何HTTP框架,並在響應返回時“傳遞”回去。
public void sendPostRequest(final String url, final HashMap<String, String> params, final StringCallback callback) {
new AsyncTask<String, Void, String>() {
@Override
public String doInBackground(String... params) {
// TODO: HTTP things
}
@Override
protected void onPostExecute(String s)
{
super.onPostExecute(s);
if (callback != null) {
callback.onResponse(s);
}
return; // Done here
}.execute(params.get("idadder"), params.get("idadded"));
}
我的解決方案是:
new HomeActivity().enviarsolicitud(param1,param2);
@ cricket_007的最后答案可幫助我改善代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.