Multiple AsyncTask di Android

Hai All, pada kesempatan kali ini saya ingin berbagi pengalaman selama pengembangan aplikasi Android. Kasusnya gini, aplikasi ini mengalami sedikit keanehan saat me-load data dari database dan api. Saat aplikasi ini pertama kali di gunakan berjalan lancar seperti biasanya, tapi berbeda kondisi jika aplikasi dalam mode onPause (ditutupi lockscreen).

Keanehan itu terjadi ketika device Android dibiarkan 3 menit setelah di dalam mode lockscreen dan mengakses aplikasi itu kembali. PopUp loading muncul secara looping tanpa bisa dihentikan, seolah2 aplikasi seperti meload data tidak selesai-selesai. Jika dilihat dari status network ke API, aplikasi tidak hit API sama sekali. Ya, kurang lebih seperti itulah kasusnya.

Setelah di telusuri, ternyata masalah ini muncul karena di Android ada batas maximal AsyncTask jika menggunakan fungsi execute saja. Muncul lah solusi untuk menggunakan Multiple AsyncTask di Android.

Continue reading

ViewHolder Pattern di Android

Berawal dari rasa penasaran, kenapa ViewHolder pattern ini sering digunakan pada banyak aplikasi yang menampilkan ListView di Android, akhirnya saya menemukan alasannya. Yaitu untuk meningkatkan performa dari ListView dengan AdapterViews di Android. Postingan ini merupakan seri lanjutan dari pembahasan sebelumnya, dimana pada pattern ini AdapaterViews menggunakan Adapter untuk mendaur ulang tampilan yang ada di AdapaterView agar konten otomatis diperbaharui ketika dibutuhkan.

AdapterView
AdapterView

Jika kita membuat aplikasi android dengan ListView tanpa menggunakan ViewHolder, salah satu masalah terbesarnya performa dan efisiensi. Karena cara kerja dasar ListView tanpa ViewHolder ini akan melakukan pemanggilan berulang untuk setiap item data menggunakan findViewById(). Yang artinya ini sangat mempengaruhi performa dari aplikasi saat meload data. Gampangnya gini, misalnya ketika Adapter mengembalikan nilai untuk di tampilkan, kita harus melakukan pencarian “by Id” untuk elemen yang baru agar terus update secara terus menerus.

Continue reading