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

Ale*_*rov 7 android

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

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

if (progressDialog.isShowing()) {
  progressDialog.dismiss();
}
Run Code Online (Sandbox Code Playgroud)

cod*_*e22 10

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

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


Ale*_*rov 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();
    }
} 
Run Code Online (Sandbox Code Playgroud)