Некоторых конкретных ситуаций:AsyncTask выполнен в onResume после onActivityResult
У меня есть два Activities
. FirstActivity
загружает данные из сети (~ 100 кб) и может запускать SecondActivity
через startActivityForResult()
. После получения результата необходимо запустить другой сетевой вызов. Все это прекрасно работает, кроме исполнения. Вот проблема.
Я вызываю AsyncTask
от onActivityResult()
, или onResume()
или onPostResume()
. Я ожидаю, что закончится SecondActivity
, появится FirstActivity
и отобразится ProgressBar
с указанием моих загружающих работ. Но вместо этого я вижу следующее:
SecondActivity
замерзает, то FirstActivity
получает запущен (я вижу в журналах), AsyncTask
FirstActivity
срабатывает и получает отображается только когда AsyncTask
закончил свою работу!
Это также странно, потому что я использую точно такой же код, когда сначала начинаю FirstActivity
, и все работает так, как ожидалось.
Итак, вопрос:
В чем разница между запуском AsyncTask
от onCreate()
и onActivityResult()
? Почему андроид ведет себя так? Это конкретная версия?
Большое спасибо.
Некоторый код:
активность А (первый):
void onCreate() {
super.onCreate();
setupUI();
code = 1;
launchLoading(code);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
launchLoading(resultCode);
}
активность B (второй):
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
setResult(i);
finish();
}
});
UPD:
создать список пользовательские представления (~ 50) в методе onPostExecute(). Почему это вызывает проблемы?
предоставить код вашего класса AsyncTask - ваша проблема, скорее всего, вызвана неправильной реализацией метода onPostExecute (..) ' –
Спасибо за точку. Я нашел одну строку в методе onPostExecute(), вызывающую проблемы. Я собираюсь провести какое-то время. Я уточню вопрос с деталями. –
Обновлено сообщение. –