我有一个类LoginTask它是AsyncTask的子类。我用它来执行登录功能。只要我LoginTask看起来像这样如何仅在完成回调函数的CallBack方法后调用onPostExecute
class LoginTask extends AsyncTask<JsonObject,Void,String>{
@Override
protected void onPreExecute() {
//Codes to show progressDialog
}
@Override
protected String doInBackground(JsonObject... params) {
Ion.with(MainActivity.this)
.load("--URL TO POST JSON DATA--")
.setJsonObjectBody(params[0])
.asJsonObject()
.withResponse()
.setCallback(new FutureCallback<Response<JsonObject>>() {
@Override
public void onCompleted(Exception e, Response<JsonObject> result) {
if (result != null) {
if (result.getHeaders().code() == 200) {
Toast.makeText(MainActivity.this, "Login Success", Toast.LENGTH_SHORT).show();
} else if (result.getHeaders().code() == 401) {
Toast.makeText(MainActivity.this, "Invalid Username or password", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "Something wrong check connection !!!", Toast.LENGTH_SHORT).show();
}
}
}
});
return "some message";
}
@Override
protected void onPostExecute(String string) {
super.onPostExecute(string);
if(progressDialog.isShowing()){
progressDialog.dismiss();
//TODO Something
}
}
}
我想要的,什么是事情发生了:
- 我想只有从
FutureCallback
方法得到结果之后调用onPostExecute
但是当我调试应用程序它是直接返回值和onPostExecute
方法之前立即调用FutureCallback
方法。 - 我已经写代码来执行LoginTask在登录按钮按下事件,我想显示
ProgressDialog
每次当按下按钮时,但问题是ProgressDialog仅在第一次显示,它没有第二次按下按钮时出现。 - 我想设置一些消息给一个变量,并返回到
onPostExecute
方法,以便我可以根据String参数的值处理特定的任务,但是FutureCallback
仅在执行完整个Task后才会调用。
任何类型的建议将不胜感激。
尝试没有'AsyncTask',做任何在'onCompleted' –
@kishorejethava喔,我的建议对不起谢谢... –