在解散之前是否应该检查ProgressBar是否显示?

当AsyncTask完成时,Im解散进度对话框。 我应该在解散之前检查isShowing吗?

我试过删除这个检查,它正常工作,但可能是有隐藏的陷阱?

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

Solutions Collecting From Web of "在解散之前是否应该检查ProgressBar是否显示?"

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

但是检查isShowing是一个好的做法。 所以它不会受到伤害,继续检查它。

好像是在执行里面检查的:

 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(); } } 

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

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

检查源代码 ,如果在代码中处理,则不必担心。 如果没有处理完成,您可以select创build风险较高但速度较慢但安全性较低的环境。