Android asynctask извлекается после повторного входа в действие

Я хочу создать «умный загрузчик», который может загружать изображения в фоновом режиме (используя AsyncTask). Есть два действия: A и B. В действии A я могу выбрать список изображений, который хочу просмотреть (сначала загрузить, если он не был загружен один раз). Затем введите действие B, здесь я запускаю асинтаск для загрузки изображения в фоновом режиме и в потоке пользовательского интерфейса, показываю изображение пользователю.

есть большой список, загрузка которого может занять несколько минут. Одна сложная проблема заключается в том, что когда асинтаск все еще загружает список, пользователь может выйти из действия B (вернуться к действию A. (Я знаю, что асинтаск продолжит работу, даже если действие B будет уничтожено). Но если в это время пользователь выберет другой список для просмотра (затем введите действие B). Я хочу на некоторое время остановить предыдущую задачу, начал загружать сначала новый список, а затем старый список. Мои мысли сделать это - получить предыдущую асинтаск и изменить загрузку Порядок. Но я не знаю, как получить асинтаск, у меня есть несколько вопросов о воссоздании асинтаска, но все они касаются повторной настройки (например, поворота экрана). Есть ли способ получить фоновую работающую асинтаску, после того, как я уничтожу активность и воссоздаю ее.

Спасибо!


person user2548556    schedule 26.07.2013    source источник


Ответы (1)


Как только вы уничтожите Activity, AsyncTask исчезнет. По этой причине AsyncTasks не являются оптимальным решением, если вы хотите избежать запуска фоновой операции с нуля.

Я думаю, вы должны структурировать свое приложение для загрузки изображений с помощью IntentService. В упражнении A выберите список изображений. Выбрав его, запустите IntentService для загрузки изображений. После выполнения IntentService он может уведомить пользователя о завершении операции или отправить локальное широковещательное сообщение обратно активности. В любом случае, даже если пользователь ушел из действия, работа не исчезла. Если активность была уничтожена, вы можете выяснить, выполнена ли загрузка, и если да, отобразить изображения. Если это не сделано, вы можете поставить индикатор активности.

person Joe Malin    schedule 26.07.2013