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

标签 java android android-asynctask progressdialog

我有一个带有服务类的 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/

相关文章:

java - 使用自定义适配器获取已检查的项目

android - 管理多个异步任务以从 html 代码下载多个图像,泄漏 ram,有什么想法吗?

java - 我无法为 AsyncTask 的结果参数设置上限

java - 隐藏 GridLayout 列和剩余列间距

java - 如何使用反射返回二维数组?

android - OnListItemClick 在 Activity 中

java string.Substring StringIndexOutOfBoundsException 循环内

java - linux服务器中的服务器套接字代码

java - 应用程序服务器可能已经在主机 localhost 上运行

android - 从 AsyncTask 静态调用 startActivity