2011-10-17 33 views

Trả lời

2

Có vẻ như đã được kiểm tra bên trong việc triển khai:

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

Bạn không cần phải kiểm tra làHiển thị loại bỏ nó. Nếu bạn không kiểm tra cho isShowing nó sẽ chỉ bỏ qua việc bỏ qua() là thanh tiến trình không hiển thị.

Nhưng việc kiểm tra làHiển thị là một thực hành tốt. Vì vậy, nó sẽ không bị tổn thương để tiếp tục kiểm tra nó.

0

Nếu bạn chỉ có một chỗ trong mã của mình, trong đó dismiss() được gọi, thì không. Bạn nên biết nếu hộp thoại đang hiển thị hay không tại thời điểm đó.

Tuy nhiên, tôi đã gặp phải một số vấn đề với ProgressDialog và thay đổi định hướng, khiến nhu cầu có nhiều hơn một nơi mà hộp thoại có khả năng bị loại bỏ, do đó cần thực hiện kiểm tra isShowing().

0

kiểm tra source code, nếu mã được xử lý bằng mã bạn không phải lo lắng. Nếu không có xử lý được thực hiện nó là sự lựa chọn của bạn để tạo ra môi trường nhiều rủi ro hơn nhưng nhanh hoặc chậm nhưng an toàn.

Các vấn đề liên quan