Activity停止时remove掉
1.1: Weview常见的坑 及其 内存泄漏的解决方案:
WebView 1. WebView常见的坑
API 16之前版本存在长途代码执行缝隙,该缝隙源自于措施没有正确限制使用WebView.addJavascriptInterface要领,打击者可以使用Java Reflection API操作该缝隙执行任意Java东西和要领。
WebView的销毁和内存泄漏问题。WebView的完全销毁是件麻烦事,一旦销毁流程不正确,极易容易导致内存泄漏。
jsbridge
通过javascript构建一个桥,桥的两端一个端是客户端,一端是处事端,它可以让本地端挪用远真个web代码,也可以让远端挪用本地的代码。
WebViewClient.onPageFinished(不靠谱) –> WebChromeClient.onProgressChanged(靠谱)
后台耗电(性能优化)
WebView开启网页时会本身开启线程,如果没有合理的销毁,那么残存线程就会一直运行,so这会非常耗电的,解决方案:有一种暴力方法就是Activity的onDestroy中挪用System.exit()要领把虚拟机封锁,也可以结合本身应用的WebView的情况设计出一个温柔的方案。
WebView硬件加速导致的页面衬着问题
WebView硬件加速偶尔导致页面白块,页面闪烁,但是加载速度对照快,解决方案:封锁硬件加速。
原因:WebView会关联一个Activity,WebView执行的操纵是在新线程傍边回收,时间Activity没有步伐确认,Activity的生命周期和WebView线程生命周期不一致导致WebView一直执行,因为WebView内部持有Activity的引用,导致Activity一直不能被回收,道理类似于匿名内部类持有外部类的引用一样。那么如何解决呢?解决方案如下:
独立进程,简单暴力,涉及到进程间通信。(开发过程中常用)
动态添加WebView,对传入WebView中使用Context弱引用,动态添加WebView意思在构造中创建一个ViewGroup用来安排WebView,Activity创建add进来,,Activity遏制时remove失。
webview的学习总结:
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33228.html
- 上一篇: // 路径记得更换 type : ‘POST‘
- 下一篇:于是开始和最终的状态都有了