Exception-android.view.WindowLeaked


1
WindowManager(24325): android.view.WindowLeaked: Activity com.haier.uhome.wash.ui.activity.WashServiceAllActivity has leaked window android.widget.ZoomButtonsController$Container{42915d48 V.E..... ......I. 0,0-720,97} that was originally added here

这个窗口泄漏问题是因为WebView自带的缩放按钮(如下图),因为这个在消失过程中是一个渐变的效果,如果这个时候调用了父容器的onDestory()方法后,就会导致WindowLeaked。

知道原因后,有相应的处理方式:
如果要求必须带有这个原生控件中自带的缩放按钮,那就可以在调用度容器destory之前,让这个带有渐变效果的按钮立马消失。处理代码如下:
@Override
public void finish() {
ViewGroup view = (ViewGroup) getWindow().getDecorView();
view.removeAllViews();
super.finish();
}

如果允许不显示该缩放控件,就可以在初始化WebView的时候,将该属性设置为不显示缩放按钮。

Fork me on GitHub