7.1: Create an AsyncTask
Task 1. Set up the SimpleAsyncTask project
1.1 Membuat layout
Dalam praktik ini Anda akan belajar:
- Menambahkan AsyncTask ke aplikasi untuk menjalankan tugas di latar belakang, di luar thread UI.
- Mengidentifikasi dan memahami manfaat dan kekurangan menggunakan AsyncTask untuk tugas latar belakang.
Buat proyek baru bernama SimpleAsyncTask menggunakan template Empty Activity (terima default untuk opsi lainnya)
Membuat Design layout
Tambahkan elemen UI penting berikut ke layout untuk MainActivity
Ubah tampilan root RelativeLayout
ke LinearLayout
Task 2. Create the AsyncTask subclass
AsyncTask akan mengeksekusi tugas latar belakang sederhana, yaitu tertidur dengan durasi acak. Dalam aplikasi sesungguhnya, tugas latar belakang dapat melakukan semua jenis pekerjaan mulai dari membuat kueri database hingga menghubungkan ke internet, menghitung gerakan GO berikutnya agar Anda bisa mengalahkan pemenang GO saat ini.
AsyncTask memiliki metode berikut untuk melakukan pekerjaan dari thread utama:
onPreExecute()
: Metode ini menjalankan thread UI, dan digunakan untuk menyiapkan tugas Anda (seperti menampilkan bilah kemajuan).doInBackground()
: Di sinilah tempat Anda mengimplementasikan kode untuk mengeksekusi pekerjaan yang akan dilakukan pada thread terpisah.onProgressUpdate()
: Ini akan dipanggil pada thread UI dan digunakan untuk memperbarui kemajuan dalam UI (seperti mengisi bilah kemajuan)onPostExecute()
: Lagi pada thread UI, ini akan digunakan untuk memperbarui hasil ke UI setelah AsyncTask telah selesai dimuat.
2.1 Menjadikan AsyncTask Subkelas
Buat kelas Java baru bernama SimpleAsyncTask yang memperluas AsyncTask
Membuat String sebagai tipe hasil karena Anda akan memperbarui TextView dengan string saat AsyncTask telah menyelesaikan eksekusi.
Implementasikan konstruktor untuk AsyncTask yang memerlukan TextView dan menyetel mTextView ke yang diteruskan dalam TextView
2.2 Mengimplementasikan doInBackground()
Lalu, Tambahkan metode doInBackground()
Implementasikan doInBackground() ke:
- Buat integer acak antara 0 dan 10
- Kalikan jumlahnya dengan 200
- Buat thread saat ini agar tertidur. (Gunakan
Thread.sleep()
) dalam blok try/catch. - Kembalikan String “Awake at last after xx milliseconds” (xx adalah jumlah milidetik saat aplikasi tertidur).
2.3 Mengimplementasikan onPostExecute()
Saat metode doInBackground()
selesai, nilai yang dikembalikan secara otomatis diteruskan ke callback onPostExecute()
. kemudian Implementasikan onPostExecute()
untuk mengambil argumen String
(yang Anda definisikan dalam parameter ketiga AsyncTask dan yang metode doInBackground()
kembalikan) dan tampilkan string tersebut dalam TextView
Task 3. Implement the final steps
3.1 Implementasikan metode yang mulai dengan AsyncTask
Aplikasi Anda sekarang memiliki AsyncTask yang melakukan pekerjaan di latar belakang (atau akan melakukannya jika Anda tidak memanggil sleep()
sebagai pekerjaan yang disimulasi.) Anda sekarang bisa mengimplementasikan metode yang dipanggil saat tombol Start Task diklik, untuk memicu tugas latar belakang.
Dalam file MainActivity.java file, tambahkan variabel anggota untuk menyimpan TextView.
Tambahkan kode ke metode startTask()
untuk membuat instance SimpleAsyncTask
, meneruskan TextView mTextView
ke konstruktor
Perbarui TextView untuk menampilkan teks
3.2 Mengimplementasikan onSaveInstanceState()
Jalankan aplikasi dan klik tombol Start Task
Ganti metode onSaveInstanceState()
dalam MainActivity untuk mempertahankan teks di dalam TextView saat aktivitas dimusnahkan dan Ambil nilai TextView saat aktivitas dipulihkan dalam metodeonCreate()
LEAVE A COMMENT