Bagaimana cara mengambil instance AsyncTask yang sedang berjalan?

Saya menerapkan fitur seperti DownloadManager di aplikasi yang saya kembangkan. Saya menggunakan AsyncTask untuk mendorong unduhan ke latar belakang.
AsyncTask ini ada di dalam layanan bernama misalnya DownloadService yang dipakai pada salah satu aktivitas saya. Artinya, beberapa pengunduhan dapat dimulai dari berbagai aktivitas yang berbeda.
Yang ingin saya lakukan adalah membuat aktivitas tertentu agar semua unduhan yang sedang berjalan menunjukkan kemajuannya dan memiliki tombol untuk menjeda atau melanjutkan pengunduhan unduh.


person 2hamed    schedule 23.06.2012    source sumber


Jawaban (2)


Jika Anda menginginkan hal seperti itu, Anda dapat menyimpan dalam Array semua Tugas Async yang dimulai di layanan, dan kemudian memeriksa statusnya dengan http://developer.android.com/reference/android/os/AsyncTask.html#getStatus%28%29.

Semoga ini membantu!

person Dimitris Makris    schedule 23.06.2012
comment
Katakanlah saya membuat array yang Anda katakan. Bagaimana saya bisa mengaksesnya dalam aktivitas yang berbeda dari aktivitas pembuatannya? Dan juga bagaimana saya bisa menambahkannya ke berbagai aktivitas? - person 2hamed; 24.06.2012

Alih-alih menampung DownloadService di dalam suatu Aktivitas, tempatkan DownloadService di dalam kelas Application aplikasi Anda sebagai anggota kelas, karena hanya akan ada satu instance dari kelas ini per aplikasi. Anda kemudian dapat mengambilnya dalam aktivitas Anda dengan menelepon ((YourApplication)getApplication()).getDownloadService(). Kamu harus:

  1. Buat kelas yang memperluas Aplikasi, misalnya Aplikasi Anda
  2. Deklarasikan dalam tag <application> file manifes sebagai android:name="YourApplication"
  3. Gunakan dalam aktivitas Anda dengan memanggil ((YourApplication)getApplication()).someMethodToGetDownloadService()
person Jeshurun    schedule 23.06.2012
comment
Seperti yang saya katakan, DownloadService adalah kelas terpisah (saya tidak menyimpannya di dalam aktivitas saya, saya hanya membuat instance di sana). - person 2hamed; 24.06.2012
comment
Bagus, lalu buat instance-nya di dalam kelas Aplikasi Anda. Ambil aktivitas tersebut dan serahkan tugas ke aktivitas tersebut. Maka Anda harus dapat memiliki aktivitas kemajuan di mana Anda dapat mengambil semua tugas yang sedang berjalan dan mengizinkan pengoperasiannya. - person Jeshurun; 24.06.2012