Karena Honeycomb
dan v4 Compatibility Library
itu mungkin untuk digunakan AsyncTaskLoader
. Dari apa yang saya mengerti, AsyncTaskLoader
dapat bertahan melalui perubahan konfigurasi seperti membalik layar.
Apakah dianjurkan untuk menggunakan AsyncTaskLoader
bukan AsyncTask
? Apakah LoaderManager
masuk dalam gambar juga?
Tapi saya belum menemukan contoh yang bagus tentang cara menggunakan dengan benar AsyncTaskLoader
. Dokumen juga tidak memberikan contoh. Adakah yang bisa memberikan beberapa contoh yang baik.
AsyncTaskLoader
, dan ketika lebih banyak pengembang mulai menggunakannya, lebih banyak contoh akan datang.Ketika membandingkan AsyncTaskLoader vs. AsyncTask , seperti yang Anda ketahui ketika Anda memutar layar perangkat Anda, itu dapat menghancurkan dan menciptakan kembali aktivitas Anda, untuk membuatnya jelas biarkan gambar memutar perangkat Anda saat transaksi jaringan sedang berlangsung:
AsyncTask akan dieksekusi kembali sebagai utas latar lagi, dan pemrosesan utas latar sebelumnya hanya menjadi berlebihan dan zombie.
AsyncTaskLoader hanya akan digunakan kembali berdasarkan ID Loader yang terdaftar di Loader Manager sebelumnya, jadi hindari menjalankan kembali transaksi jaringan.
Singkatnya, AsyncTaskLoader mencegah duplikasi utas latar dan menghilangkan duplikasi kegiatan zombie.
sumber
AsyncTaskLoader melakukan fungsi yang sama dengan AsyncTask , tetapi sedikit lebih baik. Ia dapat menangani perubahan konfigurasi Aktivitas dengan lebih mudah, dan berperilaku dalam siklus hidup Fragmen dan Aktivitas. Yang menyenangkan adalah bahwa AsyncTaskLoader dapat digunakan dalam situasi apa pun yang digunakan AsyncTask. Kapan saja data perlu dimuat ke dalam memori untuk ditangani oleh Activity / Fragment, AsyncTaskLoader dapat melakukan pekerjaan dengan lebih baik.
Ada beberapa masalah dengan menggunakan AsyncTasks, meskipun:
AsyncTaskLoader doc
sumber
Beberapa perbedaan selain dijelaskan dalam jawaban lain:
Saat menggunakan AsyncTaskLoader di atas AsyncTask :
AsyncTaskLoader memberi kami kebebasan untuk memuat data cache lama sampai data baru dikembalikan oleh
forceLoad()
Kita dapat mengatur penundaan untuk AsyncTaskLoader oleh
setUpdateThrottle()
yang dapat mencegah update berturut-turut kepada klien (Activity / Fragmen)AsyncTaskLoader dapat dibagikan ke beberapa fragmen jika mereka memiliki aktivitas induk yang sama dan jika itu dimulai dari
getActivity().getSupportLoaderManager()
AsyncTaskLoader dihancurkan
LoaderManger
ketika aktivitas tertautnya tidak tersedia lagi. sementara kita perlu menghancurkan AsyncTasks secara manual jika aktivitas pemanggilnya menghancurkan. Ini menghemat waktu kita dari menulis semua hal kliring. AsyncTaskLoader bermain dengan baik dengan siklus hidup masing-masing.Jadi, AsyncTaskLoader jauh lebih baik daripada AsyncTask.
sumber