Jika kita melihat kode sumbernya, kita akan melihat AsyncTaskdan Handlersepenuhnya ditulis dalam Java. (Ada beberapa pengecualian. Tapi itu bukan poin penting)
Jadi tidak ada sihir di AsyncTaskatau Handler. Kelas-kelas ini membuat hidup kita lebih mudah sebagai pengembang.
Misalnya: Jika Program A memanggil metode A (), metode A () dapat berjalan di utas berbeda dengan Program A. Kami dapat dengan mudah memverifikasi dengan kode berikut:
Thread t = Thread.currentThread();
int id = t.getId();
Mengapa kami harus menggunakan utas baru untuk beberapa tugas? Anda dapat google untuk itu. Banyak alasan, misalnya: pekerjaan berat, kerja jangka panjang.
Jadi, apa perbedaan antara Thread, AsyncTaskdan Handler?
AsyncTaskdan Handlerditulis dalam Java (secara internal mereka menggunakan a Thread), sehingga semua yang dapat kita lakukan dengan , Handleratau AsyncTaskkita dapat mencapai menggunakan Threadjuga.
Apa yang bisa Handlerdan AsyncTaskbenar - benar membantu?
Alasan yang paling jelas adalah komunikasi antara utas penelepon dan utas pekerja. ( Pemanggil Utas : Utas yang memanggil Utas Pekerja untuk melakukan beberapa tugas. Utas penelepon tidak harus menjadi utas UI). Tentu saja, kita dapat berkomunikasi antara dua utas dengan cara lain, tetapi ada banyak kelemahan (dan bahaya) karena keamanan benang.
Itu sebabnya kita harus menggunakan Handlerdan AsyncTask. Kelas-kelas ini melakukan sebagian besar pekerjaan untuk kita, kita hanya perlu tahu metode mana yang harus ditimpa.
Perbedaan antara Handlerdan AsyncTaskadalah: Gunakan AsyncTaskketika utas Pemanggil adalah Utas UI . Inilah yang dikatakan dokumen android:
AsyncTask memungkinkan penggunaan utas UI yang benar dan mudah. Kelas ini memungkinkan untuk melakukan operasi latar belakang dan menerbitkan hasil pada utas UI tanpa harus memanipulasi utas dan / atau penangan
Saya ingin menekankan dua poin:
1) Mudah menggunakan utas UI (jadi, gunakan ketika utas penelepon adalah Utas UI).
2) Tidak perlu memanipulasi penangan. (berarti: Anda dapat menggunakan Handler alih-alih AsyncTask, tetapi AsyncTask adalah pilihan yang lebih mudah).
Ada banyak hal dalam posting ini yang belum saya katakan, misalnya: apa itu UI Thread, atau mengapa lebih mudah. Anda harus mengetahui beberapa metode di balik setiap kelas dan menggunakannya, Anda akan sepenuhnya memahami alasannya.
@: ketika Anda membaca dokumen Android, Anda akan melihat:
Handler memungkinkan Anda untuk mengirim dan memproses objek Message dan Runnable yang terkait dengan MessageQueue utas
Deskripsi ini mungkin tampak aneh pada awalnya. Kita hanya perlu memahami bahwa setiap utas memiliki masing-masing antrian pesan (seperti daftar yang harus dilakukan), dan utas akan mengambil setiap pesan dan melakukannya sampai antrian pesan kosong (sama seperti kita menyelesaikan pekerjaan kita dan pergi tidur). Jadi, ketika Handlerberkomunikasi, itu hanya memberikan pesan kepada pemanggil utas dan itu akan menunggu untuk diproses.
Rumit? Ingatlah bahwa Handlerdapat berkomunikasi dengan utas penelepon dengan aman.