【发布时间】:2026-01-22 11:25:01
【问题描述】:
我有一个带有服务类的 android 应用程序,可以与 RestWebService 进行通信。 服务类的方法使用 AsyncTasks。我想在执行 AsyncTask 期间显示 ProgressDialog。因此我有一个私人领域
public final class UserService extends Service {
private static final String LOG_TAG = UserService.class.getSimpleName();
private static UserService instance = null;
private ProgressDialog progressDialog;
public static UserService getInstance() {
if (instance == null) {
instance = new UserService();
}
return instance;
}
...
}
在方法showProgressDialog(Context ctx)中实例化:
private ProgressDialog showProgressDialog(Context ctx) {
progressDialog = new ProgressDialog(ctx);
progressDialog.setProgressStyle(STYLE_SPINNER);
progressDialog.setCancelable(true);
progressDialog.show();
return progressDialog;
}
我在我的 AsyncTask 的 onPreExecute 上调用此方法:
@Override
protected void onPreExecute() {
progressDialog = showProgressDialog(ctx);
}
并尝试在 onPostExecute 中关闭它:
@Override
protected void onPostExecute(HttpResponse<User> unused) {
Log.v(LOG_TAG, "onPostExecute");
progressDialog.dismiss();
}
我看到,onPostExecute 方法被执行了,因为 Log 命令的原因,但是我的 ProgressDialog 没有关闭。
我做错了什么?
非常感谢您的回答!
【问题讨论】:
-
您是否在服务中显示进度对话框?
标签: java android android-asynctask progressdialog