27
2017
09

android异常之android.view.WindowLeaked

开发过程遇到这样一个问题,先贴异常log:

android.view.WindowLeaked: 
CommonWebViewActivity has leaked window android.widget.ZoomButtonsController$Container{bf4bd55 V.E...... ......I. 0,0-1080,146} that was originally added here

看到windowLeaked这个很容易就想到是窗体泄漏导致的问题,由于当前页面使用到webView,看到ZoomButtonsController是跟界面缩放相关设置:webView.getSettings.setBuiltInZoomControls(true);
这一设置主要为了实现页面的缩放,设置缩放按钮的出现,但是按钮可以自动隐藏,由于隐藏的过程是渐进的过程,在同一时间如果结束掉包含webView的界面,就会报这一错误,导致程序crash掉,而且是100%复现,头疼了半天,百度一番知道了解决的方法,即结束页面的时候将页面中相关控件移除不会出现该问题:

@Override
    public void finish() {
        ViewGroup view = (ViewGroup) getWindow().getDecorView();
        view.removeAllViews();
        super.finish();
    }

参考链接:https://stackoverflow.com/questions/27254570/android-view-windowleaked-activity-has-leaked-window-android-widget-zoombuttons/28455240

上一篇:Android 监听应用内Activity生命周期 下一篇:文字和图片混合模式