在我的应用上运行猴子工具时,我得到 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
在搜索之后我再次找到了这个答案
此错误的一个原因可能是尝试显示应用程序 窗口/对话框通过不是活动的上下文
那么如何解决这个问题?
答案 0 :(得分:3)
通常窗口泄漏是因为您未在Activity
中使用showDialog方法,而只使用Dialog.show()
方法。
当显示对话框并且您的Activity
更改(例如,方向更改)对话框的配置没有附加窗口时,这会导致窗口泄漏。
如果您使用Compatibility library,则应使用DialogFragment代替纯dialog
。
答案 1 :(得分:0)
WindowManager$BadTokenException
背后的原因是您在上下文不活动的窗口上继续显示dialog
或popupwindow
。
因此,无论何时切换活动或解除任何活动,都应始终关闭弹出窗口或对话框。
因此你应该在onPause方法中调用dilog.dismiss()。
onPause()
{
dilog.dismiss()
}