Я реализую функцию, подобную DownloadManager, в приложении, которое я разрабатываю. Я использую AsyncTask, чтобы перевести загрузку в фоновый режим.
Эта AsyncTask находится внутри службы с именем, например, DownloadService
, экземпляр которой создается в одном из моих действий. Таким образом, это означает, что несколько загрузок могут быть запущены из разных экземпляров действия.
Что я хочу сделать, так это иметь конкретное действие, в котором все запущенные в данный момент загрузки будут показывать свой прогресс и иметь кнопку для приостановки или возобновления загрузки. скачать.
Как получить запущенные экземпляры AsyncTask?
Ответы (2)
Если вам это нужно, вы можете хранить в массиве все асинхронные задачи, которые запускаются в службе, а затем проверять их статус с помощью http://developer.android.com/reference/android/os/AsyncTask.html#getStatus%28%29.
Надеюсь это поможет!
person
Dimitris Makris
schedule
23.06.2012
Ну, скажем, я создал этот массив, как вы сказали. Как я могу получить к нему доступ в другой деятельности, отличной от той, в которой он был создан? А также как я могу добавить к нему различные действия?
- person 2hamed; 24.06.2012
Вместо того, чтобы размещать DownloadService
внутри действия, разместите его внутри класса Application
вашего приложения в качестве члена класса, так как для каждого приложения будет существовать только один экземпляр этого класса. Затем вы можете получить его в своей деятельности, вызвав ((YourApplication)getApplication()).getDownloadService()
. Тебе придется:
- Создайте класс, который расширяет Application, скажем, YourApplication
- Объявите его в теге
<application>
файла манифеста какandroid:name="YourApplication"
- Используйте его в своей деятельности, вызвав
((YourApplication)getApplication()).someMethodToGetDownloadService()
person
Jeshurun
schedule
23.06.2012
Как я уже сказал,
DownloadService
— это отдельный класс (я не размещал его внутри своей активности, я просто создаю его там).
- person 2hamed; 24.06.2012
Отлично, тогда создайте экземпляр внутри своего класса приложения. Получите его в действии и отправьте ему задачи. Затем вы должны иметь возможность выполнять действия, в которых вы можете получить все запущенные задачи и разрешить операции над ними.
- person Jeshurun; 24.06.2012