我有一個類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喔,我的建議對不起謝謝... –