webview的学习总结:

Posted awkflf11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webview的学习总结:相关的知识,希望对你有一定的参考价值。

1.1: Weview常见的坑 及其 内存泄漏的解决方案:

 

  WebView

1. WebView常见的坑

  1. API 16之前版本存在远程代码执行漏洞,该漏洞源自于程序没有正确限制使用WebView.addjavascriptInterface方法,攻击者可以使用Java Reflection API利用该漏洞执行任意Java对象和方法。

  2. WebView的销毁和内存泄漏问题。WebView的完全销毁是件麻烦事,一旦销毁流程不正确,极易容易导致内存泄漏。

  3. jsbridge
      通过javascript构建一个桥,桥的两端一个端是客户端,一端是服务端,它可以让本地端调用远端的web代码,也可以让远端调用本地的代码。

  4. WebViewClient.onPageFinished(不靠谱) –> WebChromeClient.onProgressChanged(靠谱)

  5. 后台耗电(性能优化)
      WebView开启网页时会自己开启线程,如果没有合理的销毁,那么残余线程就会一直运行,so这会非常耗电的,解决方案:有一种暴力方式就是Activity的onDestroy中调用System.exit()方法把虚拟机关闭,也可以结合自己应用的WebView的情况设计出一个温柔的方案。

  6. WebView硬件加速导致的页面渲染问题
      WebView硬件加速偶尔导致页面白块,页面闪烁,但是加载速度比较快,解决方案:关闭硬件加速。

2. WebView的内存泄漏问题

原因:WebView会关联一个Activity,WebView执行的操作是在新线程当中回收,时间Activity没有办法确认,Activity的生命周期和WebView线程生命周期不一致导致WebView一直执行,因为WebView内部持有Activity的引用,导致Activity一直不能被回收,原理类似于匿名内部类持有外部类的引用一样。那么如何解决呢?解决方案如下:

    1. 独立进程,简单暴力,涉及到进程间通信。(开发过程中常用)

    2. 动态添加WebView,对传入WebView中使用Context弱引用,动态添加WebView意思在布局中创建一个ViewGroup用来放置WebView,Activity创建add进来,Activity停止时remove掉。

以上是关于webview的学习总结:的主要内容,如果未能解决你的问题,请参考以下文章

HTML5学习总结-11 IOS 控件WebView显示网页

小程序总结(十五)- 关于web-view嵌套的H5页面的分享功能

Android-View的绘制源码学习总结

[WebView学习之三]:使用WebView来创建Apps

Android 中 View移动总结:ViewDragHelper学习及用法详解

Android 中 View移动总结:ViewDragHelper学习及用法详解