首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android ProgressDialog dismiss 前無需檢查 isShowing:內部已處理狀態

     編輯:程式設計綜合問答

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 不可復用,需重新創建。

信任框架內部狀態管理,代碼更簡潔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved