Handlerを使います.
注意点が必要なのはメインスレッドではないスレッドで,ViewなどのGUI部品を触れないということです.
なので,GUI部品を触るのは,メインスレッドでやりましょう.
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class Temp extends Activity implements Runnable {
private ProgressDialog progressDialog;
/** Called when the activity is first created. */
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
do();
}
private void do(){
// 通信中ダイアログの表示
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("データ取得中");
progressDialog.setMessage("しばらくお待ちください");
progressDialog.setIndeterminate(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
Thread thread = new Thread(this);
thread.start();
}
public void run() {
// 時間のかかる処理をここに記述
try{
// 今回はわざと3秒間スリープ
Thread.sleep(3000);
} catch (InterruptedException ie){
} ///////////////////////
handler.sendEmptyMessage(0);
}
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
// 処理終了時の動作をここに記述
/////////////////////////
// プログレスダイアログ終了
progressDialog.dismiss();
}
};
}