–Tutorial Android — Pernah kalian membuat aplikasi di android menggunakan komputasi yang sangat intensif? atau membuat aplikasi yang melakukan proses download file secara bersamaan? atau bahkan melakukan proses searching file di direktori ponsel sehingga proses tersebut akan membuat aplikasi yang kamu terasa hang/macet atau malah seolah2 terhenti tidak mengubah attribut componentnya
Looping
Kode yang melibatkan looping yang lama dan banyak akan sangat boros terhadap penggunaan prosesor sehingga aplikasi yang lain diabaikan. Misalkan sebagai berikut yaitu akan looping sekian juta kali dan hasil looping akan ditampilkan di TextView
kode looping sebagai berikut
Button mulai = (Button) findViewById(R.id.mulai); mulai.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { TextView hitungan = (TextView) findViewById(R.id.hitungan); for(int i=0;i<10000000;i++){ hitungan.setText(String.valueOf(i)); } } });
ketika kalian jalankan kode diatas! maka aplikasi android kalian akan hang karena prosesor dipaksa fokus untuk melakukan looping diatas!
Thread Android
Solusi yang bisa digunakan untuk agar aplikasi tetap bisa berjalan dengan baik dan tetap responsif yaitu menggunakan Thread atau dan membungkus component android menggunakan class runOnUiThread memang sih jadi banyak kodenya tapi ini untuk melihat pergerakan update component
Button mulai = (Button) findViewById(R.id.mulai); TextView hitungan = (TextView) findViewById(R.id.hitungan); mulai.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new Thread(new Runnable() { @Override public void run() { for(int i=0;i<1000000;i++){ int finalI = i; runOnUiThread(new Runnable() { public void run() { //System.out.println(finalI); hitungan.setText(String.valueOf(finalI)); } }); } } }).start(); } });
Bila kita tidak membungkus dengan runOnUiThread maka akan terjadi error
bahwa tidak dapat memperbarui UI dari thread selain dari thread UI atau thread “utama”.
Dengan menggunakan cara diatas, kalian akan melihat Text View akan berubah text nya sesuai dengan proses looping atau bila kalian menggunakan Progress Bar akan nampak progressnya
ref:
https://developer.android.com/guide/components/processes-and-threads?hl=id
https://stackoverflow.com/questions/5185015/updating-android-ui-using-threads