繁体   English   中英

AsyncTask中的ProgressDialog关闭不起作用

[英]ProgressDialog in AsyncTask dismiss not working

我有一个带有服务类的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没有关闭。

我究竟做错了什么?

预先非常感谢您的回答!

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

没有 正确 显示 ProgressDialog

显示后,请致电:

private ProgressDialog dialog;

// store the reference, "this" is the Context
dialog = ProgressDialog.show(this, "title...", "message..."); 

隐藏后, 使用存储的引用

dialog.dismiss();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM