2 csh 34 csh_34 于 2012.12.27 10:18 提问

摧毁ProgressBar之前是否要检查isShowing的值

当AsyncTask结束时,我会摧毁progress dialog。在摧毁progress dialog之前我是否要检查isShowing的值?
我试图不检查,同样会正常运行,但是不是有隐藏的漏洞?

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

2个回答

curie_87
curie_87   2012.12.27 13:11
已采纳

似乎是在implementation中检查:

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();
    }
}
hxn_217
hxn_217   2012.12.27 15:14

你不需要检查isShowing的值去销毁 dialog。如果你不检查isShowing,系统会忽略progressbar调用dismiss()方法。但是检查isShowing是一个很好的实践,检查也不影响程序的正常运行。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!