當AsyncTask完成時,Im關閉進度對話框。在解散之前我應該檢查isShowing嗎?我應該在解散之前檢查ProgressBar是否顯示?
我試過刪除這個檢查,它工作正常,但可能是有隱藏的陷阱?
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
當AsyncTask完成時,Im關閉進度對話框。在解散之前我應該檢查isShowing嗎?我應該在解散之前檢查ProgressBar是否顯示?
我試過刪除這個檢查,它工作正常,但可能是有隱藏的陷阱?
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
是似乎是內實現檢查:
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解僱它。如果你不檢查isShowing,它只會忽略解除()是進度條不顯示。
但檢查isShowing是一種好的做法。所以它不會受到傷害繼續檢查它。
如果你只有一個地方在你的代碼中調用dismiss()
,那麼沒有。您應該知道當時是否顯示對話框。
但是,我已經遇到了ProgressDialogs和方向改變的一些問題,這導致需要有多個地方可能會被忽略對話,因此需要檢查isShowing()
。
檢查source code,如果它在代碼中處理,您不必擔心。如果沒有完成處理,您可以選擇創建更具風險但速度雖然很慢但安全性較低的環境。