У меня есть класс LoginTask, который является подклассом AsyncTask. Я использовал это для выполнения функций входа в систему. Просто мой LoginTask выглядит следующим образомКак вызвать onPostExecute только после завершения CallBack Методы doInBackground
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
}
}
}
То, что я хочу, и что было случилось:
- Я хочу назвать
onPostExecute
только после получения результата отFutureCallback
метода Но когда я отладки приложения Он прямо возвращает значение иonPostExecute
Метод, называемый Непосредственно передFutureCallback
. - Я написал код для выполнения LoginTask при входе Кнопка нажимается событий, я хочу, чтобы показать
ProgressDialog
каждый раз, когда нажимается кнопка, но проблема ProgressDialog показан только в первый раз, он не сделал появляются, когда я нажал кнопку второй раз. - Я хочу установить какое-то сообщение переменной и вернуть ее к методу
onPostExecute
, чтобы я мог обрабатывать конкретные задачи на основе значения параметра String. НоFutureCallback
вызывается только после выполнения всей задачи.
Любые предложения будут оценены.
попробовать без 'AsyncTask' и делать все, что в' onCompleted' –
@kishorejethava Оо Мне жаль спасибо за ваше предложение ... –