2013-03-06 113 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(); 
}