進度對話框下面是代碼的一些位:一個線程來顯示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()? – 2011-12-24 15:28:41
@Flav - 不,請調用'show.join()'而不是'sleep'語句。但現在我看到你在這裏嘗試做的更好。更新後的答案... – ziesemer 2011-12-24 15:33:17