Как получить запущенные экземпляры AsyncTask?

Я реализую функцию, подобную DownloadManager, в приложении, которое я разрабатываю. Я использую AsyncTask, чтобы перевести загрузку в фоновый режим.
Эта AsyncTask находится внутри службы с именем, например, DownloadService, экземпляр которой создается в одном из моих действий. Таким образом, это означает, что несколько загрузок могут быть запущены из разных экземпляров действия.
Что я хочу сделать, так это иметь конкретное действие, в котором все запущенные в данный момент загрузки будут показывать свой прогресс и иметь кнопку для приостановки или возобновления загрузки. скачать.


person 2hamed    schedule 23.06.2012    source источник


Ответы (2)


Если вам это нужно, вы можете хранить в массиве все асинхронные задачи, которые запускаются в службе, а затем проверять их статус с помощью http://developer.android.com/reference/android/os/AsyncTask.html#getStatus%28%29.

Надеюсь это поможет!

person Dimitris Makris    schedule 23.06.2012
comment
Ну, скажем, я создал этот массив, как вы сказали. Как я могу получить к нему доступ в другой деятельности, отличной от той, в которой он был создан? А также как я могу добавить к нему различные действия? - person 2hamed; 24.06.2012

Вместо того, чтобы размещать DownloadService внутри действия, разместите его внутри класса Application вашего приложения в качестве члена класса, так как для каждого приложения будет существовать только один экземпляр этого класса. Затем вы можете получить его в своей деятельности, вызвав ((YourApplication)getApplication()).getDownloadService(). Тебе придется:

  1. Создайте класс, который расширяет Application, скажем, YourApplication
  2. Объявите его в теге <application> файла манифеста как android:name="YourApplication"
  3. Используйте его в своей деятельности, вызвав ((YourApplication)getApplication()).someMethodToGetDownloadService()
person Jeshurun    schedule 23.06.2012
comment
Как я уже сказал, DownloadService — это отдельный класс (я не размещал его внутри своей активности, я просто создаю его там). - person 2hamed; 24.06.2012
comment
Отлично, тогда создайте экземпляр внутри своего класса приложения. Получите его в действии и отправьте ему задачи. Затем вы должны иметь возможность выполнять действия, в которых вы можете получить все запущенные задачи и разрешить операции над ними. - person Jeshurun; 24.06.2012