在解雇之前,我应该检查ProgressBar是否正在显示吗?

时间:2011-10-17 10:50:48

标签: android

我在AsyncTask完成时忽略了进度对话框。在解雇之前我应该​​检查isShowing吗?

我已经尝试删除此检查并且它正常工作,但可能有隐藏的陷阱?

if (progressDialog.isShowing()) {
  progressDialog.dismiss();
}

4 个答案:

答案 0 :(得分:9)

你不应该检查isShowing是否解雇它。如果你没有检查isShowing它会忽略dismiss()是进度条没有显示。

但是检查isShowing是一个很好的做法。所以继续检查它不会有什么坏处。

答案 1 :(得分:2)

似乎在实现中检查了:

public void dismiss() {
    if (Thread.currentThread() != mUiThread) {
        mHandler.post(mDismissAction);
    } else {
        mDismissAction.run();
    }
}

private void dismissDialog() {
    if (mDecor == null || !mShowing) {
        return;
    }

    try {
        mWindowManager.removeView(mDecor);
    } finally {
        mDecor = null;
        mWindow.closeAllPanels();
        onStop();
        mShowing = false;

        sendDismissMessage();
    }
} 

答案 2 :(得分:0)

如果您的代码中只有一个位置调用了dismiss(),那么没有。您应该知道当时是否显示对话框。

然而,我遇到了ProgressDialogs和方向更改的一些问题,这导致需要有多个可能会被解除对话的地方,因此需要进行isShowing()检查。

答案 3 :(得分:0)

检查source code,如果是在代码中处理,则无需担心。如果不进行处理,您可以选择创建风险更高但速度更快但安全性更低的环境。