• Uncategorized
  • 0

Create an AsyncTask di Android

Thread adalah jalur independen eksekusi dalam program yang berjalan. Saat program Android diluncurkan, sistem Waktu Proses Android membuat thread yang bernama thread “Main”. Saat program berjalan, setiap baris kode dieksekusi secara berkelanjutan, baris per baris. Thread utama ini adalah bagaimana aplikasi Anda berinteraksi dengan komponen dari Android UI Toolkit, dan mengapa thread utamanya kadang disebut “thread UI”.

Agar pengalaman pengguna (UX) lancar dan merespons gestur pengguna dengan cepat, Android Framework menyediakan kelas helper bernama AsyncTask yang memproses kerja dari thread UI. AsyncTask adalah kelas Java abstrak yang menyediakan satu cara untuk memindahkan pemrosesan intensif ke thread yang terpisah, sehingga mengizinkan thread UI agar tetap responsif. Karena thread terpisah ini tidak disinkronisasi dengan thread yang memanggil, thread ini disebut thread asinkron. AsyncTask juga berisi callback yang mengizinkan Anda menampilkan hasil penghitungan kembali ke thread UI.

Dalam praktik ini, Anda akan mempelajari cara menambahkan tugas latar belakang ke aplikasi Android menggunakan AsyncTask.

Pertama kita akan membuat project baru

  1. Ubah tampilan root RelativeLayout ke LinearLayout.
  2. Tambahkan elemen UI penting berikut ke layout untuk MainActivity:

 

Implementasi pada xml seperti berikut:

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.

Dalam latihan ini Anda akan menggunakan subkelas AsyncTask untuk mendefinisikan pekerjaan yang akan dijalankan dalam thread yang berbeda dengan thread UI, yang akan menghindari masalah kinerja apa pun.

Saat Anda menggunakan AsyncTask, Anda bisa mengonfigurasinya menggunakan parameter ini:

  • Params: Tipe data parameter yang dikirimkan ke tugas saat mengeksekusi doInBackground()metode pengganti.
  • Progress: Tipe data unit kemajuan yang dipublikasikan menggunakan onProgressUpdated() metode pengganti.
  • Result: Tipe data hasil yang diberikan oleh onPostExecute() metode pengganti.

Kemudian buat subclass baru bernama SimpleAsync

Override method doInBackground dan tambahkan onPostExecute dan tambahkan kode seperti berikut:

 

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.

Kemudian pada mainActivity, masukkan kode berikut:

Klik tombol Start Task lagi, dan saat aplikasi tertidur, putar perangkat. Jika tugas latar belakang selesai sebelum Anda bisa memutar ponsel, coba lagi. Atau, Anda bisa memperbarui kode dan membuatnya tertidur untuk jangka waktu yang lebih lama.

Ada beberapa hal yang terjadi di sini:

  • Saat Anda memutar perangkat, sistem akan memulai ulang aplikasi, memanggil onDestroy()lalu onCreate(), yang memulai ulang siklus hidup aktivitas. Karena AsyncTasks tidak lagi terhubung ke siklus hidup aplikasi dan tidak bisa terhubung kembali ke aktivitas.
  • AsyncTasks akan terus berjalan hingga selesai di latar belakang, mengonsumsi sumber daya sistem, tetapi tidak pernah menampilkan hasil di UI, yang disetel ulang di onCreate(). AsyncTasks tidak akan pernah bisa memperbarui TextView yang diteruskan kepadanya, karena TextView tertentu juga telah dimusnahkan. Akhirnya, sistem akan kehabisan sumber daya dan akan gagal.
  • Bahkan tanpa AsyncTask, pemutaran perangkat akan menyetel ulang semua elemen UI ke status default-nya, yang bagi TextView mengimplikasikan string tertentu yang Anda setel dalam file activity_main.xml.

Tambahkan kode berikut pada onCreate paling bawah:

 

JAlankan aplikasi

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *