Thread Android

By | April 4, 2022
858 Views

–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

See also  Firebase Firestore Database

ref:

https://developer.android.com/guide/components/processes-and-threads?hl=id

https://stackoverflow.com/questions/5185015/updating-android-ui-using-threads