问题描述
- 摧毁ProgressBar之前是否要检查isShowing的值
- 当AsyncTask结束时,我会摧毁progress dialog。在摧毁progress dialog之前我是否要检查isShowing的值?
我试图不检查,同样会正常运行,但是不是有隐藏的漏洞?if (progressDialog.isShowing()) { progressDialog.dismiss();}
解决方案
似乎是在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(); }}
解决方案二:
你不需要检查isShowing的值去销毁 dialog。如果你不检查isShowing,系统会忽略progressbar调用dismiss()方法。但是检查isShowing是一个很好的实践,检查也不影响程序的正常运行。
时间: 2024-07-28 13:57:01