Android 为什么';在onPostExecute()中使用以下代码调用progressDialog.Dislose()是否正常工作?

Android 为什么';在onPostExecute()中使用以下代码调用progressDialog.Dislose()是否正常工作?,android,Android,这取决于调用progressDialog.show()的位置 如果我像下面的代码那样调用它,对话框将关闭 /** AsyncTask **/ @Override protected void onPreExecute() { mProgressDialog.setMax(MAX_VALUE); mProgressDialog.setProgress(0); mProgressDialog.show(); } @Override protected void onPos

这取决于调用progressDialog.show()的位置

如果我像下面的代码那样调用它,对话框将关闭

/** AsyncTask **/

@Override
protected void onPreExecute() {
    mProgressDialog.setMax(MAX_VALUE);
    mProgressDialog.setProgress(0);
    mProgressDialog.show();
}

@Override
protected void onPostExecute(Object o) {
    mProgressDialog.dismiss(); // it works!!
    super.onPostExecute(o);
}
但是,如果我使用以下代码,它将不起作用。
我是说对话还没有结束

/** A.java **/

private DownloadListener mDownloadListener = new DownloadListener() {
    @Override
    public void onCompleted() {
        Handler handler = new Handler(Looper.getMainLooper());

        ...

        } else {
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mDecompressor.initialize(mContext, mDecompressListener);
                }
            }, 0);
        }
    }
};

/** B.java **/

public void initialize(final Context context,
                       final DecompressListener listener) {
    if(initialized(context)) return;

    showProgressBar(context);

    ...

    mUnzipTask = new UnzipTask(context, mProgressDialog, listener, dirPath, filePath);
    mUnzipTask.execute();
}

private void showProgressBar(final Context context) {
    mProgressDialog = new ProgressDialog(context);
    ...
    mProgressDialog.show();
}

/** AsyncTask **/

@Override
protected void onPostExecute(Object o) {
    mProgressDialog.dismiss(); // it doesn't work (Dialog isn't closed)
    super.onPostExecute(o);
}
我很困惑,因为这两种情况都会打开UI线程上的对话框。
但是第一个有效,第二个无效


任何知道它的不同之处的人?

mProgressDialog
似乎只在代码中的
onPreExecute()中初始化。。那么你得到NPE了吗?你能粘贴整个代码吗?其中是mProgressDialog.show();从@ADM调用,没有NPE。对话框不仅仅是关闭的。@user3783123 K,然后我将根据您的疑问对其进行编辑。您能解释一下第二部分是如何相互关联的吗?他们是不是在互相打电话?