1.webView常见的一些坑
- 1.Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用webView.addJavascriptInterface方法,远程攻击者可通过使用Java Refection API利用该漏洞执行任意Java对象的方法。
- 2.webView在布局文件中的使用:webView写在其他容器中时,必须先将webview从该容器中remove掉,在调用webview的removeAllViews 和webview的destory方法,才能真正的销毁整个webview,否则会出现内存泄漏问题。
- 3.jsbridge :就是android端与web端之间的桥梁。实现两个端互调。
- 4.webViewClient.onPageFinished:他会判断这个网页内容是否真的已经加载完毕。而如果当前网页产生跳转的话这个方法会被加载无数次。所以我们一般使用webChromeClient.onProgressChanged。
- 5.后台耗电 当webview加载网页时 ,webView会自己开启线程,如果webview没有很好的被销毁的话,这个线程会一直在运行,导致耗电量居高不下。
- 6.webView硬件加速导致页面渲染问题 暂时没有更好的解决方法。只能关闭硬件加速。
2.避免webview内存泄漏方法
- 1.独立进程,简单暴力,不过可能涉及到进程间通信。
WebView独立进程的实现比较简单,只需要在AndroidManifest中找到对应的WebViewActivity,对其配置"android: process"属性即可。
- 2.动态添加webView,对传入webView中使用的Context使用弱引用,动态添加WebView意思在布局创建个viewGroup用来放置WebView,Activity创建时add进来。在activity停止时remove掉。在调用webview的removeAllViews 和webview的destory方法。
网友评论