Blog

0

Android Progress Dialog

Sering kali dalam membuat aplikasi, ada komputasi yang membutuhkan cukup lama sehingga device kita seperti “not responding”. Tentu kita tidak ingin membuat user bingung “apa yang terjadi dengan device saya?”. Sebuah cara feedback yang paling banyak digunakan adalah menampilkan loading screen seperti berikut:

Untuk menampilkan progress dialog tsb di android cukup menggunakan code berikut

[sourcecode language="java"]
final ProgressDialog pd = ProgressDialog.show(context, "", "Loading. Please wait…", true, false);
new Thread(new Runnable() {
public void run() {
// put your heavy threaded code here
pd.dismiss();
}
}).start();
[/sourcecode]

Namun, jika kita ingin melakukan aksi terhadap view yang ada di screen misalnya mengubah text dari sebuah textview, tidak cukup hanya dengan menambah code textView.setText(myText) di dalam method run karena android tidak memperbolehkan thread yang berbeda dengan thread pembuat view untuk mengubah-ubah viewnya. Jika dilakukan, akan memunculkan exception “Only the original thread that created a view hierarchy can touch its views.” Oleh karena itu diperlukan sebuah Handler untuk mengirim dan menerima message apabila proses di dalam method run thread sudah selesai. Dengan menggunakan Handler, kita bisa mengubah view milik main thread.

[sourcecode language="java"]
private void myMethod() {
final ProgressDialog pd = ProgressDialog.show(context, "", "Loading. Please wait…", true, false);
new Thread(new Runnable() {
public void run() {
// put your heavy threaded code here

myHandler.sendEmptyMessage(0);
}
}).start();
}

private Handler myHandler = new Handler() {

@Override
public void handleMessage(Message msg) {
pd.dismiss();
textView.setText(myText);
}
};

[/sourcecode]

Comments

There are no comments yet.

Leave a Reply

Your email is never published nor shared. Required fields are marked *

*

© Copyright PT Javan Cipta Solusi 2012. All rights reserved.