Некоторая конкретная ситуация:
У меня есть два Activities
. FirstActivity
загружает данные из сети (~ 100 КБ) и может запускать SecondActivity
через startActivityForResult()
. После получения результата должен быть запущен другой сетевой вызов. Все это прекрасно работает, кроме производительности. Здесь проблема.
Я запускаю AsyncTask
с onActivityResult()
или onResume()
или onPostResume()
. Я ожидаю, что SecondActivity
завершится, появится FirstActivity
и отобразится ProgressBar
, что указывает на мою загрузку. Но вместо этого я вижу следующее:
SecondActivity
зависает, FirstActivity
запускается (я вижу это в журналах), AsyncTask
срабатывает и FirstActivity
отображается только тогда, когда AsyncTask
завершает свою работу!
Это также странно, потому что я использую точно такой же код при первом запуске FirstActivity
, и все работает как положено.
Итак, вопрос:
Чем отличается запуск AsyncTask
от onCreate()
и onActivityResult()
? Почему андроид ведет себя так? Это конкретная версия?
Большое спасибо.
Код:
Задание A (первое):
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 (). Почему это вызывает проблемы?