gpt4 book ai didi

java - AsyncTask 中的 ProgressDialog 关闭不起作用

转载 作者:行者123 更新时间:2023-11-30 02:50:25 25 4
gpt4 key购买 nike

我有一个带有服务类的 android 应用程序可以与 RestWebService 通信。服务类的方法使用 AsyncTasks。我想在 AsyncTask 执行期间显示 ProgressDialog。因此我有一个私有(private)领域

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 没有关闭。

我做错了什么?

非常感谢您的回答!

最佳答案

如果您的 asynctask 是外部类,请确保在执行 preExecute 中的 progressdialog.show() 之前在构造函数中初始化了 progressdialog 对象。

关于java - AsyncTask 中的 ProgressDialog 关闭不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24274319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com