Android WebView的缩放按钮导致android.view.WindowLeaked原因及解决办法

webview在安卓APP中的应用非常的多,比如你的APP内容经常变换,如果每次都更新APP,那是相当的麻烦。使用webview将避免这个问题,我们可以使用网页来布局,通过修改网页来达到改变APP内容的目的。在其它语言中webview的应用也是非常多的,比如C#中使用webview来做布局,不仅可以做到自适应,还能做出非常好看的扁平化效果。

Android教程

Android教程

刚刚在APP中使用webview时遇到一个问题,当我们对webview显示的网页内容进行放大缩小操作后,正常关闭Activity会出现一个意外,你会发现你的程序崩了。据网友所说,这是因为webview的放大缩小按钮是一个渐变动作,在它还没动作完成之前关闭它所依赖的窗体,将会抛出此异常。

网上的解决办法也很多,能用的没几个,这里分享两种我测试可用的办法。

第一种,在关闭窗体之前移除所有控件,不知道为什么直接移除webview没有效果,仍然会报Activity has leaked window android.widget.ZoomButtonsController that was originally added here android.view.WindowLeaked:这个异常。

在你的activity类中重写finish方法。

@Override

public void finish() {

ViewGroup view = (ViewGroup) getWindow().getDecorView();

view.removeAllViews();

super.finish();

}

虽然能达到目的,但是在关闭那一瞬间会出现黑屏,影响用户体验。

第二种,禁用按钮放大缩小,使用手势进行操作。(貌似大家都知道放大缩小的手势,所以完全可以不用放大缩小按钮)

先开启手势操作

webView.getSettings().setBuiltInZoomControls(true);

然后不显示变焦按钮

webView.getSettings().setDisplayZoomControls(false);

完美解决问题,建议使用第二种。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/242182.html

(0)
上一篇 2022年4月7日 17:09
下一篇 2022年4月7日 17:09

相关推荐

发表回复

登录后才能评论