Pengenalan AsyncTask dan AsyncTaskLoader Pada Android Studio

 


 

Ada dua cara untuk melakukan pemrosesan latar belakang di Android: menggunakan

kelas AsyncTask, atau menggunakan kerangka kerja Loader, yang menyertakan kelas

AsyncTaskLoader yang menggunakan AsyncTask. Di sebagian besar situasi, Anda akan

memilih kerangka kerja Loader, namun penting untuk mengetahui cara kerja AsyncTask,

sehingga Anda bisa membuat pilihan yang bagus.

 

Dalam bab ini Anda akan mempelajari alasan pentingnya memproses beberapa tugas di

latar belakang, di luar thread UI. Anda akan mempelajari cara menggunakan AsyncTask,

bila tidak menggunakan AsyncTask, dan dasar-dasar penggunaan loader.

Thread UI

Bila aplikasi Android dimulai, aplikasi membuat thread utama, yang sering disebut

thread UI. Thread UI mengirimkan kejadian ke widget antarmuka pengguna (UI) yang

sesuai, dan ini merupakan tempat aplikasi Anda berinteraksi dengan komponen dari toolkit

UI Android (komponen dari paket android.widget dan android.view).

Model thread Android memiliki dua aturan:

 

1 . Jangan memblokir thread UI.

Thread UI perlu memberikan perhatiannya untuk menggambar UI dan menjaga aplikasi

tetap responsif terhadap masukan pengguna. Jika semuanya terjadi di thread UI, operasi

panjang seperti akses jaringan atau kueri database bisa

memblokir seluruh UI. Dari perspektif pengguna, aplikasi tersebut akan mogok. Lebih

buruk lagi, jika thread UI diblokir selama lebih dari beberapa detik (saat ini sekitar 5 detik)

pengguna akan ditampilkan dialog "application not responding" (ANR). Pengguna bisa

memutuskan untuk keluar dari aplikasi dan mencopot pemasangannya.

Untuk memastikan aplikasi Anda tidak memblokir thread UI:

 Selesaikan semua pekerjaan dalam waktu kurang dari 16 md untuk setiap layar UI.

 Jangan menjalankan tugas asinkron dan tugas lain yang berjalan lama pada thread

UI. Sebagai gantinya, implementasikan tugas pada thread latar belakang

menggunakan AsyncTask (untuk tugas singkat atau yang bisa disela) atau

AsyncTaskLoader (untuk tugas berprioritas tinggi, atau tugas yang perlu melaporkan

kembali ke pengguna atau UI).

2. Lakukan pekerjaan UI hanya pada thread UI.

Jangan menggunakan thread latar belakang untuk memanipulasi UI Anda, karena toolkit

UI Android bukan thread-safe.

AsyncTask

Gunakan kelas AsyncTask untuk mengimplementasikan tugas asinkron yang berjalan

lama di thread pekerja. (Thread pekerja adalah thread yang bukan thread utama atau

thread UI.) AsyncTask memungkinkan Anda menjalankan operasi latar belakang dan

mempublikasikan hasil di thread UI tanpa memanipulasi thread atau penangan.

Bila AsyncTask dieksekusi, maka akan melalui empat langkah:

1. onPreExecute( ) dipanggil di thread UI sebelum tugas dieksekusi. Langkah ini

biasanya digunakan untuk mempersiapkan tugas, misalnya dengan menampilkan

bilah kemajuan di UI.

2. doInBackground( Params. . . ) dipanggil pada thread latar belakang segera setelah

onPreExecute( ) selesai. Langkah ini menjalankan komputasi latar belakang,

mengembalikan hasil, dan meneruskan hasilnya ke onPostExecute( ) . Metode

 

doInBackground( ) juga bisa memanggil publishProgress( Progress. . . ) untuk

mempublikasikan satu atau beberapa unit kemajuan.

3. onProgressUpdate( Progress. . . ) berjalan di thread UI setelah publishProgress(

Progress. . . ) dipanggil. Gunakan onProgressUpdate( ) untuk melaporkan suatu

bentuk kemajuan ke thread UI sewaktu komputasi latar belakang dieksekusi.

Misalnya, Anda bisa menggunakannya untuk meneruskan data guna

menganimasikan bilah kemajuan atau menampilkan log di bidang teks.

4. onPostExecute( Result) berjalan di thread UI setelah komputasi latar belakang

selesai.

 

AsyncTaskLoader

AsyncTaskLoader adalah loader yang setara dengan AsyncTask. AsyncTaskLoader

menyediakan metode,

loadInBackground( ), yang dijalankan di thread terpisah. Hasil loadInBackground( )

secara otomatis dikirimkan ke thread UI, melalui onLoadFinished( ) LoaderManager

callback.

Penggunaan AsyncTaskLoader

Untuk mendefinisikan subkelas AsyncTaskLoader , buat kelas yang memperluas

AsyncTaskLoader<D> , dalam hal ini Dadalah tipe data yang sedang Anda muat. Misalnya,

AsyncTaskLoader ini akan memuat daftar string: public static class StringListLoader extends

AsyncTaskLoader<List<String>> {}

Berikutnya, implementasikan konstruktor yang cocok dengan implementasi super kelas:

Konstruktor menggunakan konteks aplikasi sebagai argumen dan meneruskannya ke

panggilan untuk super() . Jika loader Anda memerlukan informasi tambahan untuk

melakukan pemuatan, konstruktor bisa mengambil argumen tambahan. Dalam contoh

yang ditampilkan di bawah ini, konstruktor menggunakan sebuah istilah kueri.

public StringListLoader(Context context, String queryString) {

super(context);

mQueryString = queryString;

}

Untuk melakukan pemuatan, gunakan metode penggantian loadInBackground( ) , akibat

metode doInBackground( ) dari AsyncTask . Misalnya:

@Override

public List<String> loadInBackground() {

 

List<String> data = new ArrayList<String>;

//TODO: Load the data from the network or from a database

return data;

}

 

Praktikum

1.      Jalankan IDE android studio

2.      ganti script activity_main.xml 

 


3.      selanjutnya ganti script MainActivity.java 

 








4.      Buat sebuah file xml baru dengan nama network_security_config.xml di dalam folder/res/xml dan ketikkan script seperti gambar berikut :

 


5.      Sesuaikan script AndroidManifest :

 


 

6.      Hasil

 




Komentar

Postingan Populer