Penggunaan AsyncTask
Dalam programming java atau android, programmer sering menggunakan asynctask untuk mengeksekusi proses atau operasi yang berat.Asyntask bekerja di background sehingga tidak mengganggu aktifitas user ketika system sedang mengeksekusi suatu proses. Akan tetapi penggunaan asynctask ini kadang menimbulkan beberapa kenadala. Salah satunya adalah ketika request data dari server kemudian menampilkannya. Pada proses asynctask tidak diperbolehkan mengkesekusi view dan mengeset suatu adapter karena akan menimbulkan error. sumber
you can’t update the UI on a background Thread which is what you are doing with setAdapter() and is why it works in onPostExecute()
sebagai contoh yang salah :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public void loadBgData(){ textFilter.setVisibility(View.VISIBLE); AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { // get data from network // ........... textView.setText(description); // penerapan salah listView.setAdapter(adapter); // penerapan salah // ........... return null; } @Override protected void onPostExecute(Void aVoid) { textView.setVisibility(View.VISIBLE); // penerapan benar textView.setText(description); // penerapan benar listView.setAdapter(adapter); // penerapan benar } }; task.execute(); } |
Terkadang data yang di eksekusi pada doInBackground
akan menjadi null
ketika dipanggil di onPostExecute
.Untuk mengatasi hal tersebut bisa menggunakan List
. Jika ingin memperdalam Asynchronous Task Android berikut saya share e-book free learning dari packtpub.com. Link Download