WebView的整理

2019-07-05  本文已影响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掉。

上一篇下一篇

猜你喜欢

热点阅读