美文网首页
WebView的整理

WebView的整理

作者: 纸狒 | 来源:发表于2019-07-05 16:42 被阅读0次

一,webView的常见的一些坑;

二,关于webView的内存泄露问题;


                                      一,webView之前的坑

1,API16以及之前的版本存在着远程代码执行安全漏洞。该漏洞源于程序没有正确使用webView.addJavascriptInterface方法,远程攻击者可以通过使用Java  Reflection  API利用该漏洞执行任意java对象的方法。(即利用反射机制攻击其他为注册的java类)

2,webView在布局文件中的使用:webView写在其他的容器中时:

利用addView动态将webView添加入容器中,

当销毁时,要在onDestory()方法中把webView销毁,然后才能真正地销毁整个webView。

具体销毁的步骤:

先把容器中的webView调用remove方法移除,即到onDestory()方法中调用webView的removeAllViews();,和webView的destory方法;

转载:以下是Android避免WebView内存泄漏的方法

原文:https://blog.csdn.net/weixin_34323858/article/details/88157190

@Override

protected void onDestroy() {

super.onDestroy();

if (mWebView != null) {

//加载null内容

mWebView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);

//清除历史记录

mWebView.clearHistory();

//移除WebView

((ViewGroup) mWebView.getParent()).removeView(mWebView);

//销毁VebView

mWebView.destroy();

//WebView置为null

mWebView = null;

}

}

收藏:webview内存泄漏终极解决方案

https://www.jianshu.com/p/aa5a99b565e7

该博文介绍了关于webview内存泄漏的一些方法,其中讲到,上面的方法其实没有太多作用,因此她采用了:

1,另起一个进程加载webview,页面销毁后干掉这个进程。(用于webview业务逻辑间没有交互的情况),但另起一个进程,要占用CPU时间,主进程需要等待接受信息,那么势必会慢一些。

2,文中还利用了一些实例进行介绍。

webview的一些相关的知识和问题

1,jsbridge:让本地的navi端可调用远端的js代码,可以远端web调用本地的navi

2,webViewClient.onPageFinished - > webChromeClient.onProgressChanged

前一个方法是加载完成回调时:用于判断是否加载,若加载中跳转,则会调用无数次

后一个方法则时加载多次,且有操作,靠谱。

3,后台耗电:

  webView自己开线程,残余线程留着,耗电居高不下,在Activity的onDestory()方法中直接调用System.exit()方法,可以销毁掉webView,且直接关虚拟机

4,webView硬件加速导致页面渲染问题

安卓3.0开始硬件加速,容易出现界面闪烁,页面白块,可以通过设置webView展示关闭硬件加速来解决问题。


                            三,关于webView内存泄漏问题

1,解决webView内存泄漏的问题的方法:

               开启独立进程,简单粗暴,不过可能会涉及到进程间的通信。

问题的描述:

           1,webView关联Activity     

=>     2,内部    

=>     3,在新线程中,时间无法确定 。导致webView不能一直持有Activity的引用,因此没有办                法回收。

          原因:Activity的生命周期和新线程webView的生命周期不一样。

原理:

            匿名内部类持有外部类的引用,导致外部类无法回收。

关键词:    独立进程,进程间通信

2,动态添加webView,对传入webview中使用的Context使用弱引用,动态添加webView,意思是在布局创建webGroup用来放置webView,Activity创建时add进来,在activity停止(即销毁)时,remove掉。

相关文章

  • WebView的整理

    一,webView的常见的一些坑; 二,关于webView的内存泄露问题; ...

  • WebView整理

    Android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome。 ...

  • Android WebView 学习

    第一部分:常用方法整理 WebView常用方法 WebView周边相关类 WebView缓存机制类型 Androi...

  • Webview 整理笔记

    初始化操作及常见用法 WebSettings、WebViewClient、WebChromeClient 的常用方...

  • UIWebView加载时添加请求头(含NSURLProtocol

    前言 最近app需要重新整理webview加载的架构,把webview的请求方式由post改为get,而之前加载时...

  • WebView基础

    之前webView的使用很大多局限于显示网页,现在有机会重头梳理下整理成如下笔记: 基本用法 WebView 的状...

  • android webview 梳理

    webview 零零散散的点也是有一些的,今天整理一下,首先我们一般不直接使用 webview 本身,而是对给 w...

  • 整理:webView与js交互

  • WKWebview里JS交互的问题

    关于webview的与JS交互这里比较全,感谢作者的整理。https://github.com/Haley-Won...

  • Android中的WebView详解

    Android中的WebView详解 WebView详解 基本用法 布局文件配置WebView WebView加载...

网友评论

      本文标题:WebView的整理

      本文链接:https://www.haomeiwen.com/subject/bhgjhctx.html