AsyncTask adalah class yang digunakan untuk mengeksekusi perintah dengan dukungan background proses dan menampilkan hasilnya ke UI/Layout tanpa memanipulasi Thread atau Handler. Rumit sih bahasanya tapi itu dari dokumentasi developer Google nya :D
Secara bahasa sendiri biasanya AsyncTask ini digunakan untuk memuat data. Ini berguna untuk menangani "proses yang ngehang". Biasanya jika kita melakukan get data pada API jika tanpa ini aplikasi seperti "Not Responding" nah agar tidak seperti itu kita gunakan bantuan dari Class AsyncTask ini.
- onPreExecute() : Proses yang ingin dibuat sebelum background proses di eksekusi
- doInBackground() : Proses eksekusi di dalam background proses
- onProgressUpdate() : Proses yang ingin dieksekusi selama proses berlangsung
- onPostExecute() : Proses yang ingin dibuat atau dieksekusi setelah background proses selesai
perlu menjadi perhatian, kita tidak dapat menyisipkan coding untuk memanipulasi UI/Layout pada method doInBackground() karena akan terjadi force close pada aplikasi yang kita buat
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { protected Long doInBackground(URL... urls) { int count = urls.length; long totalSize = 0; for (int i = 0; i < count; i++) { totalSize += Downloader.downloadFile(urls[i]); publishProgress((int) ((i / (float) count) * 100)); // Escape early if cancel() is called if (isCancelled()) break; } return totalSize; } protected void onProgressUpdate(Integer... progress) { setProgressPercent(progress[0]); } protected void onPostExecute(Long result) { showDialog("Downloaded " + result + " bytes"); } }
Dan cara memanggilnya
new DownloadFilesTask().execute(url1, url2, url3);
Terus ada satu lagi method yang biasa dipakai yaitu onCancelled() yang akan dieksekusi jika ternyata sebelum background selesai kita hentikan. Lengkap kan class AsyncTask ini. Saat ini banyak library-library yang mengadopsi penggunaan AsyncTask contohnya Volley dll dicari aja.
Tidak ada komentar:
Posting Komentar