why, how dan parameter mana yang diteruskan ke Asynctask <>, lihat detailnya di sini . Saya pikir itu adalah penjelasan terbaik.
Dokumentasi Android Google Mengatakan bahwa:
Tugas asinkron ditentukan oleh 3 jenis umum, yang disebut Params, Progress dan Result, dan 4 langkah, yang disebut onPreExecute, doInBackground, onProgressUpdate, dan onPostExecute.
Jenis umum AsyncTask:
Tiga jenis yang digunakan oleh tugas asinkron adalah sebagai berikut:
Params, jenis parameter yang dikirim ke tugas setelah dijalankan. Progress, jenis unit kemajuan yang dipublikasikan selama komputasi latar belakang. Hasil, jenis hasil komputasi latar belakang. Tidak semua tipe selalu digunakan oleh tugas asinkron. Untuk menandai tipe sebagai tidak terpakai, cukup gunakan tipe Void:
private class MyTask extends AsyncTask<Void, Void, Void> { ... }
Anda selanjutnya Dapat merujuk: http://developer.android.com/reference/android/os/AsyncTask.html
Atau Anda dapat menghapus apa peran AsyncTask dengan merujuk Blog Sankar-Ganesh
Struktur kelas AsyncTask biasanya seperti ini:
private class MyTask extends AsyncTask<X, Y, Z>
protected void onPreExecute(){
}
Metode ini dijalankan sebelum memulai Thread baru. Tidak ada nilai input / output, jadi inisialisasi variabel atau apa pun yang menurut Anda perlu dilakukan.
protected Z doInBackground(X...x){
}
Metode paling penting di kelas AsyncTask. Anda harus menempatkan di sini semua hal yang ingin Anda lakukan di latar belakang, di utas yang berbeda dari utas utama. Di sini kita memiliki nilai input array objek dari tipe "X" (Apakah Anda lihat di header? Kami memiliki "... extends AsyncTask" Ini adalah JENIS parameter input) dan mengembalikan objek dari tipe "Z".
void dilindungi onProgressUpdate (Y y) {
} Metode ini dipanggil menggunakan metode publishProgress (y) dan biasanya digunakan ketika Anda ingin menampilkan kemajuan atau informasi apa pun di layar utama, seperti bilah kemajuan yang menunjukkan kemajuan operasi yang Anda lakukan di latar belakang.
void terlindungi onPostExecute (Z z) {
} Metode ini dipanggil setelah operasi di latar belakang selesai. Sebagai parameter masukan, Anda akan menerima parameter keluaran dari metode doInBackground.
Bagaimana dengan tipe X, Y dan Z?
Seperti yang dapat Anda simpulkan dari struktur di atas:
X – The type of the input variables value you want to set to the background process. This can be an array of objects.
Y – The type of the objects you are going to enter in the onProgressUpdate method.
Z – The type of the result from the operations you have done in the background process.
Bagaimana kita menyebut tugas ini dari kelas luar? Hanya dengan dua baris berikut:
MyTask myTask = new MyTask();
myTask.execute(x);
Dimana x adalah parameter input dari tipe X.
Setelah kami menjalankan tugas kami, kami dapat mengetahui statusnya dari "luar". Menggunakan metode "getStatus ()".
myTask.getStatus (); dan kami dapat menerima status berikut:
RUNNING - Menunjukkan bahwa tugas sedang berjalan.
PENDING - Menunjukkan bahwa tugas belum dijalankan.
SELESAI - Menunjukkan bahwa onPostExecute (Z) telah selesai.
Petunjuk tentang menggunakan AsyncTask
Jangan panggil metode onPreExecute, doInBackground, dan onPostExecute secara manual. Ini secara otomatis dilakukan oleh sistem.
Anda tidak dapat memanggil AsyncTask di dalam AsyncTask atau Thread lain. Panggilan metode yang dieksekusi harus dilakukan di UI Thread.
Metode onPostExecute dijalankan di UI Thread (di sini Anda dapat memanggil AsyncTask!).
Parameter input tugas dapat berupa array Objek, dengan cara ini Anda dapat meletakkan objek dan tipe apa pun yang Anda inginkan.