在我的应用程序上运行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
背后的原因是您一直在上下文现在不活跃的窗口上显示dialog
或popupwindow
。
所以当你在活动之间切换或解散任何活动时,应该总是解散弹出或对话框。
因此你应该在onPause方法中调用dilog.dismiss()。
onPause()
{
dilog.dismiss()
}