首页 > 代码库 > android webview ZoomButtonsController 导致android.view.WindowLeaked 问题彻底解决

android webview ZoomButtonsController 导致android.view.WindowLeaked 问题彻底解决

Activity has leaked window android.widget.ZoomButtonsController that was originally added here android.view.WindowLeaked:

引起这个错误的原因是:

发现是webview的 ZoomButton,也就是那两个放大和缩小的按钮,导致的。如果设置为让他们出现,并且可以自动隐藏,那么,由于他们的自动隐藏是一个渐变的过程,所以在逐渐消失的过程中如果调用了父容器的destroy方法,就会导致Leaked。
所以解决方案是,在destroy之前,先让他俩立马消失。
至于立马消失的方法,网上大多抄来抄去,没有效果。
我的解决办法是,在finish掉此activity时,把子view 全部remove掉。理论上说,只需要remove这个zoom view就可以,但是我没找到获取该view的办法,只好remove掉所有的子view。这样在activity destroy时就不会报WindowLeaked的错误了。

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