Android防止泄露的窗口

时间:2011-12-01 08:03:02

标签: android android-view

在我的应用上运行猴子工具时,我得到 android.view.WindowLeaked 异常,我提到了一些stackoverflow线程,发现我们需要避免 < em> this 在创建弹出窗口时,我们需要使用getApplicationContext(),但这会导致 BadTokenException

E/AndroidRuntime(5597): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

在搜索之后我再次找到了这个答案

  

此错误的一个原因可能是尝试显示应用程序   窗口/对话框通过不是活动的上下文

那么如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

通常窗口泄漏是因为您未在Activity中使用showDialog方法,而只使用Dialog.show()方法。

当显示对话框并且您的Activity更改(例如,方向更改)对话框的配置没有附加窗口时,这会导致窗口泄漏。

如果您使用Compatibility library,则应使用DialogFragment代替纯dialog

答案 1 :(得分:0)

WindowManager$BadTokenException背后的原因是您在上下文不活动的窗口上继续显示dialogpopupwindow

因此,无论何时切换活动或解除任何活动,都应始终关闭弹出窗口或对话框。

因此你应该在onPause方法中调用dilog.dismiss()。

onPause()
{
dilog.dismiss()
}