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了。