Android的ProgressDialog本身不支持在后臺線程運行。當你需要顯示一個進度條時,它應該在主線程中創建并顯示。然而,你可以使用以下方法在后臺執行耗時操作,同時更新ProgressDialog:
setProgress()
方法來更新進度條。這是一個簡單的示例,使用AsyncTask和Handler實現后臺操作并更新ProgressDialog:
public class MyAsyncTask extends AsyncTask<Void, Integer, Void> {
private ProgressDialog progressDialog;
private Handler handler = new Handler(Looper.getMainLooper());
public MyAsyncTask(ProgressDialog progressDialog) {
this.progressDialog = progressDialog;
}
@Override
protected Void doInBackground(Void... voids) {
// 執行耗時操作
for (int i = 0; i <= 100; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
publishProgress(i);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressDialog.setProgress(values[0]);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
progressDialog.dismiss();
}
}
在你的Activity中,創建一個ProgressDialog并啟動AsyncTask:
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
new MyAsyncTask(progressDialog).execute();
這樣,你就可以在后臺執行耗時操作,同時更新ProgressDialog了。