一、Webview常见的一些坑
1、Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用WebView.addjavascriptlnterface方法,远程攻击者可以通过使用java Refilection API利用该漏洞执行任意java对象的方法
2、webView在布局文件中的使用:webView写在其它容器中时
3、jsbridge:jsbridge其实就是webView端和我们客户端之间的桥梁,主要就是为了让我们本地客户端可以调用远端web和js等代码,同时也可以让远端web调用我们客户端代码。
4、webviewClient.onPageFinished:当我们webView页面加载完成后会调用这个方法,但是这个方法存在一些坑,他会判断当前页面是否加载完毕了,当前正在加载的网页如果产生跳转的时候这个方法就会被调用无数次,这时候就用:WebChromeClient.onProgressChanged方法来代替。
5、后台耗电:当程序开启webView加载网页的时候,webView会自己去开启线程,如果没有很好的将webView销毁的话,这些线程就会一直在后台运行,这就导致了耗电量的增加。
6、webView硬件加速导致页面渲染问题:webView设置硬件加速有可能会出现闪烁,加载白块等现象,解决问题的方法就是关闭webView硬件加速。
二、关于webView的内存泄漏问题
webView出现内存泄漏问题的原因:webView关联activity的时候会自动创建线程,而activity无法确定这个线程的销毁时间,这个线程的生命周期和我们activity生命周期是不一样的,这就导致了 我们
activity销毁时,webView还持有我们activity的引用,从而出现内存泄漏问题。
解决内存泄漏问题的办法:
1、独立进程,简单暴力,不过可能涉及到进程间通信
2、动态添加WebView,对传入WebView中使用的Context使用弱引用,动态添加WebView意思是在布局创建一个ViewGroup用来防止WebView,activity创建时add进来,在Activity停止时remove掉。
网友评论