совместное использование асинктаза между действиями - PullRequest
1 голос
/ 20 марта 2011

Мое приложение загружает файлы (по 5-12 МБ) и получает к ним доступ из внешнего хранилища. Поскольку загрузка занимает минуту или две, когда один из них не подключен к Wi-Fi, я хотел бы иметь возможность начать загрузку до того, как пользователь попадет в действие, где он захочет, чтобы ему не пришлось ждать ,

Казалось, что AsyncTask - лучший путь, но потом я понял, что будущие действия (насколько я понимаю) не смогут проверять прогресс самой AsyncTask, лучшее, что они могут сделать, это продолжать проверять посмотреть, доступен ли файл для чтения ... но что, если задача все еще выполняется или потеряла сетевое соединение и ее необходимо повторить?

Кажется бесполезной тратой воссоздать AsyncTask и снова загрузить файл, если он скоро закончится.

Есть ли способ получить доступ к AsyncTask (в частности, к его состоянию) из будущей деятельности или есть лучшая парадигма, на которую я должен обратить внимание?

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

Существует классное объяснение того, как разрабатывать приложения для таких целей - Разработка клиентских приложений REST для Android .

1 голос
/ 21 марта 2011

Вы можете создать сервис, который загружает то, что вам нужно в фоновом режиме. После его завершения вы можете сообщить своему приложению, что контент готов, и остановить службу с помощью stopSelf (). Поэтому ваша загрузка продолжается все время, даже на домашних экранах. Поэтому убедитесь, что вы создали уведомление, чтобы сообщить пользователю и дать ему возможность отменить. :)

Редактировать: И, конечно, вы можете использовать задачу внутри службы. Так как сервисы не создают свои собственные потоки, это, в любом случае, хорошая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...