Предположим, у меня есть тело класса, как: (Это просто грубый дизайн класса ..)Могу ли я использовать результат класса AsyncTask после .Execute заявления
class XYZ
{
//Some Code here
submitBTN.setOnClickListener(..){
ABC obj=new ABC();
obj.execute();
Toast(obj.result).show();
}
class ABC extends AsynTask<String,Void,String>{
String result=null;
..
..
doInBackground(..){
..
..
return "success";
}
onPostExecute(String result){
this.result=result;
}
}
}
Мой вопрос заключается Toast Show «Успех "или он отобразит" null "; Поскольку мы запускаем другой поток в фоновом режиме , поэтому obj.execute является оператором блокировки или нет Я имею в виду, будет ли управление перемещаться к следующей инструкции после инструкции .execute или будет ли она ждать до тех пор, пока фоновый поток не завершится?
No. невыполнима. Тост вызывается перед запуском и завершением работы асинтезы до его завершения. Вы должны поместить этот тост в onPostExecute() для AsyncTask. – greenapps
AsyncTask не блокирует. Результат будет, скорее всего, пустым –
Возможный дубликат [Как получить результат OnPostExecute() для основного действия, потому что AsyncTask - это отдельный класс?] (Http://stackoverflow.com/questions/12575068/how-to- get-the-result-of-onpostexecute-to-main-activity-as-asynctask-is-a) –