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" />

?

轉載于:https://www.cnblogs.com/ganchuanpu/p/8485811.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452565.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452565.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452565.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux修改python默認版本

linux修改python默認版本 update-alternatives --config pythonposted on 2018-05-24 22:42 psycheman 閱讀(...) 評論(...) 編輯 收藏 轉載于:https://www.cnblogs.com/psycheman/p/9085576.html

什么是有窮狀態機

有窮狀態機的作用是描述對象在它的生命周期內所經歷狀態序列&#xff0c;以及如何響應來自外界的事件。有窮狀態機首先包含一個有限狀態的集合&#xff0c;還包含了從一個狀態到另外一個狀態的轉換。 有窮自動機看上去就像是一個有向圖&#xff0c;其中狀態是圖的節點&#xf…

linux設置開機自啟 etc rt.d,Linux下禁止服務開機自啟動

一、 Upstart是兼容System V的配置方式的&#xff0c;但主要的服務配置放在 /etc/init 下&#xff0c;這也就是為什么修改 /etc/rc${runlevel}.d/ (Ubuntu默認啟動runlevel2&#xff0c;也就是/etc/rc2.d/)下的MySQL啟動配置并不能真正起到禁止MySQL自啟動的原因(比如使用命令 …

開發經驗和屁股的關系

昨晚為CSDN俱樂部的同學們做了一個講座《微博開發、云平臺及一個微博應用開發的簡單方案》。已經用屏幕錄相機記錄下來了&#xff0c;不想講完一邊和同學聊著&#xff0c;一邊收拾&#xff0c;直接關機&#xff0c;教室中帶有保護卡的電腦自然不給面子&#xff0c;錄相文件就此…

ZCARD key

返回key的有序集元素個數。 ##返回值 integer-reply: key存在的時候&#xff0c;返回有序集的元素個數&#xff0c;否則返回0。 ##例子 redis> ZADD myzset 1 "one" (integer) 1 redis> ZADD myzset 2 "two" (integer) 1 redis> ZCARD myzset (in…

Petri網

并發系統中遇到的一個主要問題是定時問題。這個問題可以表現為多種形式&#xff0c;如同步問題、競爭條件以及死鎖問題。用于確定系統中隱含的定時問題的一種有效技術是Petri網&#xff0c;這種技術的一個很大的優點是它也可以用于設計中。Petri網是由CarlAdam Petri發明的。在…

Flask愛家租房--房屋管理(獲取房屋詳情)

文章目錄0.效果展示1.思路總結2.后端接口3.前端js4.前端html0.效果展示 1.思路總結 1&#xff09;房屋詳情頁面開始加載時&#xff0c;detail.js首先通過定義的函數&#xff08;重點&#xff1a;document.location.search&#xff09;&#xff0c;截取需要向后端取得詳情頁面的…

MAC 安裝 pygraphviz 找不到頭文件

networkx的有向圖只能通過箭頭來區別兩點之間的兩條邊&#xff0c;但是我在復現snake論文的時候&#xff0c;需要繪制兩個交叉口之間的兩條不同方向的路段&#xff0c;最后選擇了pygraphviz 直接通過anaconda打開對應終端&#xff0c;pip install pygraphviz&#xff0c;一直報…

linux ntp連接失敗,linux ntp服務器連接異常

彈性云服務器 ECS彈性云服務器(Elastic Cloud Server)是一種可隨時自助獲取、可彈性伸縮的云服務器&#xff0c;幫助用戶打造可靠、安全、靈活、高效的應用環境&#xff0c;確保服務持久穩定運行&#xff0c;提升運維效率三年低至5折&#xff0c;多種配置可選了解詳情認證鑒權|…

如此如此,怎能師夷長技以制夷!

以一個愛國的軟件設計者的角度來看這樣一個weibo,大概的內容就是&#xff1a;北京南站的4SQ上有個老外留言吐槽&#xff1a;“沒有中國身份證根本就沒法在自動售票機上買票&#xff0c;那他媽的他們弄個英文界面干屁啊&#xff01;” 出于行業的敏感性&#xff0c;我感到很有意…

基于supermap webgl三維樓層顯隱控制思路

supermap 9D 產品中&#xff0c;可以先獲取到模型的simd值&#xff0c;再調用setOnlyObjsVisible方法控制模型中單個物體的顯示和隱藏。 var smid "94"; //樓層的smid值&#xff0c;多個樓層&#xff0c;則用數組的方式 var ids []; var layers viewer.scene.la…

#python計算結果百位500向下取整,(0-499取000,500-999取500)

!/usr/bin/env python coding:utf-8 計算結果百位500向下取整&#xff0c;&#xff08;0-499取000&#xff0c;500-999取500) import math calc_Amount float(input("輸入所有可需金額&#xff1a;")) act_Amount calc_Amount if calc_Amount > 0: value2 calc…

什么是Z語言

Z語言是一種用“數學文字”或“數學符號”來描述計算機系統的規范化語言&#xff0c;它不但能應用于計算機硬件系統&#xff0c;而且也特別適用于計算機軟件系統&#xff0c;Z語言描述“做什么”而不涉及“怎么做”&#xff0c;只對目標軟件系統進行功能描述。實際上&#xff0…

Flask愛家租房--房屋管理(搜索房屋列表)

文章目錄0.效果展示1.后端接口2.前端js3.前端html0.效果展示 1.后端接口 house.py部分接口&#xff1a; # GET /api/v1.0/houses?sd2017-12-01&ed2017-12-31&aid10&sknew&p1 api.route("/houses") def get_house_list():"""獲取房…

c語言用if語句判斷字符類型,C語言if語句的使用

C語言if語句的使用【例3】#includeint main(void){char c;printf("input a character: ");cgetchar();if(c<32)printf("This is a control character\n");else if(c>0&&c<9)printf("This is a digit\n");else if(c>A&&a…

SQL的特點

1.綜合統一集數據定義語言&#xff08;DDL&#xff09;&#xff0c;數據操縱語言&#xff08;DML&#xff09;&#xff0c;數據控制語言&#xff08;DCL&#xff09;功能于一體。可以獨立完成數據庫生命周期中的全部活動&#xff1a;定義和修改、刪除關系模式&#xff0c;定義和…

編程語言API性能大比拼

Ciaran是Skimlinks項目團隊中的一名領導者&#xff0c;熱愛開發&#xff0c;在業余時間喜歡研究一門新語言。作者和他的團隊在開發Skimlinks項目時遇到了一些困難&#xff0c;于是做了這份測試&#xff0c;文中將Node.js、Scala、Go、Python、PHP進行對比&#xff0c;最終Pytho…

ubuntu 安裝ssh服務

1&#xff1a;安裝 $ sudo apt-get install openssh-server 2&#xff1a;檢查ssh服務開啟狀態 $ ps -s | grep ssh 3&#xff1a;啟動ssh服務 $ service ssh start 4&#xff1a;本地登錄 $ ssh localhost轉載于:https://www.cnblogs.com/andy1327/p/9089930.html

手把手0基礎項目實戰(一)——教你搭建一套可自動化構建的微服務框架(SpringBoot+Dubbo+Docker+Jenkins)...

本文你將學到什么&#xff1f; 本文將以原理實戰的方式&#xff0c;首先對“微服務”相關的概念進行知識點掃盲&#xff0c;然后開始手把手教你搭建這一整套的微服務系統。 項目完整源碼下載 https://github.com/bz51/SpringBoot-Dubbo-Docker-Jenkins 這套微服務框架能干啥&am…

C語言中臨時變量寫在哪里,C語言中不允許創建臨時變量,交換兩個數的內容

在C語言中可以通過建立臨時變量來實現兩個變量的交換&#xff0c;當不允許建立臨時變量時&#xff0c;應該怎樣實現兩變量的交換呢&#xff1f;假設有兩個變量num1和num2&#xff1b;下面通過兩種方法進行分析。方法一&#xff1a;利用加減法。具體算法分析如下&#xff1a;由于…