Android防止泄漏窗口



在我的应用程序上运行monkey工具时,我得到android.view。window溢异常,我参考了一些stackoverflow线程,发现我们需要避免这个,而不是我们需要使用getApplicationContext(),但这会导致BadTokenException

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

再次搜索后,我找到了这个答案,上面写着

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

那么如何解决这个呢?

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

当显示对话框时,Your Activity的配置发生了变化(例如:方向改变)对话框没有窗口可以附加,这会导致窗口泄漏。

如果您使用兼容性库,您应该使用DialogFragment而不是纯dialog

WindowManager$BadTokenException背后的原因是您一直在上下文现在不活跃的窗口上显示dialogpopupwindow

所以当你在活动之间切换或解散任何活动时,应该总是解散弹出或对话框。

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

onPause()
{
dilog.dismiss()
}

最新更新