webview 安全漏洞
-
api 16 (android 4.1)以前存在远程执行安全啊漏洞,原因 没有正确限制使用webview.addJavaScriptInterface,攻击者通过反射利用漏洞执行Java代码
-
webview 动态在布局中调用:写在容器中时候, 主要是内存泄露问题,webview没有及时销毁.
需要在aty销毁的时候,先吧webview在容器中销毁,再调用webview的onDestory,才能不造成内存泄露. -
jsBridege: 交互的桥
-
webview.onPageFininsh–>webChromCliend.onProgressChanged(更靠谱)
onPageFininsh 会在webview跳转url的时候不断的调用,用另一个进行回调会好很多. -
后台耗电问题:
webview 启动会开启一些线程, 线程会在后台进行处理,使用不当会造成线程一直后台运行耗电,
onDestory把webview销毁掉 (把虚拟机关闭掉) -
硬件加速导致渲染问题:(白屏,闪烁)
暂时关闭
关于webivew内存泄露:
(原因:webview关联aty ,但是webview内部的一些操作是在新的进程中,aty无法确定时间,生命周期不一样,webview一直持有外界的引用,不能回收,即匿名内部类持有外部类引用,导致外部类无法回收)
- 独立进程(开启单独进程对webview进行操作),可能涉及进程通讯(比较麻烦,但是作者推荐)
- 动态添加webview,对传入webview中的context使用弱引用,(动态:在布局中创建viewgroup来放置webview,aty创建的时候add进来,aty停止的时候remove掉)
推荐原因:
webview使用完毕自己干掉进程,防止内存泄露;app 主进程减少了一些内存容量.