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