在Android中,可以使用AsyncTask来执行后台任务,并在执行过程中显示进度对话框。以下是一个示例代码:
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
public class MyTask extends AsyncTask {
private Context mContext;
private ProgressDialog mProgressDialog;
public MyTask(Context context) {
mContext = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// 创建进度对话框
mProgressDialog = new ProgressDialog(mContext);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setMessage("正在执行任务...");
mProgressDialog.setCancelable(false);
mProgressDialog.show();
}
@Override
protected Void doInBackground(Void... voids) {
// 执行后台任务
for (int i = 0; i <= 100; i++) {
try {
Thread.sleep(100); // 模拟耗时操作
publishProgress(i); // 更新进度
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
// 更新进度对话框的进度
mProgressDialog.setProgress(values[0]);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// 关闭进度对话框
mProgressDialog.dismiss();
}
}
在调用AsyncTask执行任务时,可以传入当前的上下文对象,然后在onPreExecute()方法中创建并显示进度对话框。在doInBackground()方法中执行后台任务,并通过publishProgress()方法更新进度。在onProgressUpdate()方法中,可以根据进度更新进度对话框的进度。最后,在onPostExecute()方法中关闭进度对话框。
以下是如何调用MyTask的示例代码:
MyTask task = new MyTask(MainActivity.this);
task.execute();
这样就能在AsyncTask执行时显示进度对话框了。