の進捗ダイアログを表示するためにスレッドを使用すると、コードのいくつかのビットです:ここでAndroidの
public class ShowDialog extends Thread {
private static String mTitle="Please wait";
private static String mText="Loading...";
private Activity mActivity;
private ProgressDialog mDialog;
ShowDialog(Activity activity) {
this(activity, mTitle, mText);
}
ShowDialog(Activity activity, String title) {
this(activity, title, mText);
}
ShowDialog(Activity activity, String title, String text) {
super();
mText=text;
mTitle=title;
mActivity=activity;
if (mDialog == null) {
mDialog = new ProgressDialog(mActivity);
mDialog.setTitle(mTitle);
mDialog.setMessage(mText);
mDialog.setIndeterminate(true);
mDialog.setCancelable(true);
mDialog.setOnCancelListener(
new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
mDialog.dismiss();
interrupt();
}
});
}
}
public void run() {
mDialog.show();
while(!isInterrupted())
mDialog.dismiss();
mDialog=null;
}
}
そして、私の主な活動で:
ShowDialog show = new ShowDialog(this, "Please wait!","Loading badly...");
show.start();
SystemClock.sleep(2000);
show.interrupt();
私がかもしれない知っています非同期タスクとすべてのものを使用しますが、それは私が望むものではありません。しばらく時間がかかるものでSystemClock.sleepを置き換えてください。アイデアは、UIスレッドで開始と割り込みの間でコードを実行し、ProgressDialogを処理する別々のスレッドを作成することです。 スレッドで何が問題になっていますか?
ありがとうございます!
したがって、Thread.start()の代わりにThread.join()を使用する必要がありますか? –
@Flav - いいえ、あなたの 'sleep'ステートメントの代わりに' show.join() 'を呼び出してください。しかし、今私はあなたがここで何をしようとしているのが良く見えます。フォローしている更新された答え... – ziesemer