ProgressDialog.dismiss() 內部已判斷 mShowing 標誌,直接調用安全無需外層 if (isShowing())。
// ProgressDialog.dismiss() 簡化流程
public void dismiss() {
if (Thread.currentThread() != mUiThread) {
mHandler.post(mDismissAction); // 非 UI 線程轉發
} else {
mDismissAction.run();
}
}
private void dismissDialog() {
if (mDecor == null || !mShowing) return; // ✅ 內部已檢查
try {
mWindowManager.removeView(mDecor);
} finally {
mDecor = null;
mShowing = false;
// ...
}
}
progressDialog.dismiss() 即可,多線程安全。dismiss() 後 dialog 不可復用,需重新創建。信任框架內部狀態管理,代碼更簡潔。