2013-03-06 119 views
3

在我的應用程序中,我有幾個活動一個接一個。在我登錄屏幕後,我有主屏幕,然後幾個屏幕。現在,當用戶選擇設備主頁按鈕或關閉電源按鈕時,我想在用戶再次進入我的應用程序和主屏幕時顯示登錄屏幕。休息所有活動,我正在從我的基類完成它。現在到這裏我已經完成了,我的問題是,當我在其他活動中顯示對話框時,如果用戶點擊家庭或電源按鈕,那麼我得到窗口泄漏異常關閉活動完成對話框

enter image description here

像我有TempActivity正在顯示一個對話框,並且用戶點擊home鍵,以便StoreActivity和TempActivity將結束,但對話從來沒有機會被駁回。那麼處理這種情況的最佳方法是什麼? 有沒有更好的方法來解除對話框,以便我不會有任何異常。

回答

1

Dialog手柄一個成員對象,然後當你完成上面的活動,首先關閉對話框。

調用finish()

+0

感謝尼科,但事情是對話只能在或駁回的生命週期是剛過的onPause()調用onSavedInstance之前。並且僅在完成時檢測到活動完成或者在生命週期中稍晚的時間調用onDestroy。 :D – random4Infinity 2013-03-06 10:15:05

+0

@ random4Infinity你的意思是「只能在onSavedInstance之前解散[..]」?在我的應用程序中,我忽略了'onDestroy'中的'Dialog',它的功能就像一個魅力;-) – Thrakbad 2013-03-06 10:21:39

1

時覆蓋onDestroy,在那裏,你能做出這樣更整齊通過創建抽象Activity類(所有的活動延伸),其中駁回可能的對話框中,選中該對話框是否存在,如果是這樣,駁回它。

1

解僱()中的onDestroy()不解決這個問題。儘量覆蓋activity.finish(),如:

@Override 
public void finish() { 
    if(mDialog != null) { 
     mDialog.dismiss(); 
    } 
    super.finish(); 
}