一.Webview常见的一些坑
1.android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用Webview.addjavascriptlnterface方法,远程攻击者可通过使用java reflection API利用该漏洞执行任意java对象的方法,原理就是通过addjavascriptlnterface给webview增加了一个桥接口,然后去调用java对象
2.webview在布局文件中的使用:webview是写在其他容器中,一般都是通过addview方法加载到其他容器中,主要注意的是在销毁webview,在ondestory先调用remove方法在调用webview的removeallviews,和webviewondestory方法才能真正销毁webview,才不会导致内存泄露问题
3.jsbridge就是在web端和native端建立一座桥进行通讯.
4.webviewClient.onPageFinished(当加载页面完成的时候会回调这个方法,但是这个方法会判断当前网页是否真的加载完成,如果当前网页跳转的时候会调用很多次)--------->WebChromeClient.onProgressChanged(这个方法比上面哪个要靠谱一些)
5.后台耗电,当开启webview后,webview会在后台运行,一直进行耗电,最好的办法是在activity中进行关闭进程
6.webview硬件加速导致页面渲染问题,为了使webview加载的更快,会出现闪屏的状态,这种解决办法就是关闭硬件加速
二.关于webview的内存泄露问题
1.独立进程,简单暴力,不过可能涉及到进程间通信
2.动态天剑webview,对传入webview中使用的context使用弱引用,动态添加webview意思在布局创建个viewGroup用来防止webview,activity创建时add进来,在activity停止时要remove掉