Benang
Utas adalah unit eksekusi serentak. Ini memiliki tumpukan panggilannya sendiri. Ada dua metode untuk mengimplementasikan utas dalam aplikasi.
Salah satunya adalah menyediakan kelas baru yang memperluas Thread dan mengganti metode run () -nya. Yang lainnya menyediakan instance Thread baru dengan objek Runnable selama pembuatannya. Sebuah utas dapat dieksekusi dengan memanggil metode "mulai". Anda dapat menyetel "Prioritas" utas dengan memanggil metode "setPriority (int)".
Sebuah utas dapat digunakan jika Anda tidak memiliki pengaruh di bagian UI. Misalnya, Anda memanggil beberapa layanan web atau mengunduh beberapa data, dan setelah mengunduh, Anda menampilkannya ke layar Anda. Kemudian Anda perlu menggunakan Handler dengan Thread dan ini akan membuat aplikasi Anda menjadi rumit untuk menangani semua respons dari Threads.
Handler memungkinkan Anda mengirim dan memproses objek Message dan Runnable yang terkait dengan MessageQueue dari thread. Setiap utas memiliki antrian pesan masing-masing. (Seperti To do List), dan utas akan mengambil setiap pesan dan memprosesnya hingga antrian pesan kosong. Jadi, ketika Handler berkomunikasi, itu hanya memberikan pesan ke thread pemanggil dan itu akan menunggu untuk diproses.
Jika Anda menggunakan thread Java, maka Anda perlu menangani persyaratan berikut dalam kode Anda sendiri:
Sinkronisasi dengan thread utama jika Anda memposting kembali hasil ke antarmuka pengguna Tidak ada default untuk membatalkan thread Tidak ada penggabungan thread default Tidak ada default untuk menangani perubahan konfigurasi di Android
AsyncTask
AsyncTask memungkinkan penggunaan thread UI dengan benar dan mudah. Kelas ini memungkinkan melakukan operasi latar belakang dan menerbitkan hasil pada UI thread tanpa harus memanipulasi thread dan / atau penangan. Tugas asinkron ditentukan oleh komputasi yang berjalan pada thread latar belakang dan yang hasilnya dipublikasikan di thread UI.
AsyncTask akan melalui 4 tahap berikut:
onPreExecute ()
Dipanggil di thread UI sebelum tugas dijalankan
doInbackground (Params ..)
Dipanggil di thread latar belakang segera setelah onPreExecute () selesai dijalankan.
onProgressUpdate (Progress ..)
Dipanggil pada thread UI setelah panggilan ke publishProgress (Progress ...).
onPostExecute (Hasil)
Dipanggil pada thread UI setelah komputasi latar belakang selesai.
Mengapa Anda harus menggunakan AsyncTask?
Mudah digunakan untuk UI Thread. (Jadi, gunakan jika utas pemanggil adalah utas UI).
Tidak perlu memanipulasi Penangan.