У меня есть вопрос относительно этой простой часто встречающейся ситуации в android.
У нас есть основное действие, мы вызываем AsyncTask вместе со ссылкой на mainactivity, так что AsyncTask может обновлять представления в MainActivity.
Я разбиваю событие на шаги
- MainActivity создает AyncTask, передает его ссылку на него.
- AysncTask, запускает его работу, загружая десять файлов, например
- Пользователь изменил ориентацию устройства. Это приводит к указанию сироты в AsyncTask
- Когда AsyncTask завершает работу и пытается получить доступ к активности для обновления состояния, он сбой из-за нулевого указателя.
Решение для вышеперечисленного - сохранить WeakReference в AsyncTask, как рекомендовано в книге "Pro Android 4"
WeakReference<Activity> weakActivity;
in method onPostExecute
Activity activity = weakActivity.get();
if (activity != null) {
// do your stuff with activity here
}
Как это разрешает ситуацию?
Мой вопрос, если моя асинтеза загружает десять файлов, а по завершении 5 активность перезапускается (из-за изменения ориентации), будет ли снова вызвана моя FileDownloadingTask?.
Что произойдет с предыдущей AsyncTask, которая была изначально вызвана?
Спасибо, и я прошу прощения за вопрос.