zoukankan      html  css  js  c++  java
  • WebView性能优化--独立进程

    Android允许一个app同时存在多个进程,可以根据需要把不同的模块放到不同进程中处理。

    一、WebView独立进程的好处

    1.有效增大App的运存,减少由webview引起的内存泄露对主进程内存的占用。

    2.避免WebView的Crash影响App主进程的运行。

    3.拥有对WebView独立进程操控权。

    弊端:WebView进程与其他进程通讯的方式,把webview独立进程之后会发现,埋点功能和接收主进程数据都不正常了,这里就涉及到进程间通讯的问题了;
    进程通讯大概就是这几种,aidl,messager,content provider,广播;

    二、webview的配置

    下面贴上我自己的配置代码:

     1 public class WebViewConfig {
     2 
     3     //初始化WebView配置
     4     public static void initWebViewConfig(WebView webview) {
     5         // 设置WebView初始化尺寸,参数为百分比
     6         webview.setInitialScale(100);
     7         //设置WebView可触摸放大缩小
     8         webview.getSettings().setSupportZoom(true);
     9         webview.getSettings().setBuiltInZoomControls(true);
    10         //WebView双击变大,再双击后变小,当手动放大后,双击可以恢复到原始大小
    11         webview.getSettings().setUseWideViewPort(true);
    12         // 获取WebSettings对象
    13         WebSettings webSettings = webview.getSettings();
    14         // 设置WebView支持运行普通的Javascript
    15         webSettings.setJavaScriptEnabled(true);
    16         // 设置WebChromeClient,以支持运行特殊的Javascript
    17         webview.setWebChromeClient(new WebChromeClient() {
    18             @Override
    19             public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
    20                 return super.onJsAlert(view, url, message, result);
    21             }
    22         });
    23         //(默认)根据cache-control决定是否从网络上取数据。
    24         webSettings.setCacheMode(LOAD_DEFAULT);
    25         // 阻止网络图片加載
    26         webview.getSettings().setBlockNetworkImage(false);
    27     }
    28 
    29     //销毁资源
    30     public static void destroy(WebView webview) {
    31         webview.stopLoading(); //停止加载
    32         ((ViewGroup) webview.getParent()).removeView(webview); //把webview从视图中移除
    33         webview.removeAllViews(); //移除webview上子view
    34         webview.clearCache(true); //清除缓存
    35         webview.clearHistory(); //清除历史
    36         webview.destroy(); //销毁webview自身
    37         //Process.killProcess(Process.myPid()); //杀死WebView所在的进程
    38     }
    39 }

    三、清单文件中,声明一下 process属性

    1 <activity
    2             android:name=".ui.details.WebViewActivity"
    3             android:process=":webview"
    4             android:screenOrientation="portrait" />
  • 相关阅读:
    SecureCRT_FX8.0完整版
    bridge
    Quartz 框架 教程(中文版)2.2.x
    Quartz教程五:SimpleTrigger
    Quartz教程四:Trigger
    Quartz教程三:Job与JobDetail介绍
    Quartz教程二:API,Job和Trigger
    Quartz教程一:使用quartz
    Quartz教程:快速入门
    Kubernetes 1.5.3 部署
  • 原文地址:https://www.cnblogs.com/ganchuanpu/p/8485811.html
Copyright © 2011-2022 走看看