Android 多進程的利弊分析

多進程的使用方法:

Android多進程概念:一般情況下,一個應用程序就是一個進程,這個進程名稱就是應用程序包名。我們知道進程是系統分配資源和調度的基本單位,所以每個進程都有自己獨立的資源和內存空間,別的進程是不能任意訪問其他進程的內存和資源的。

如何讓自己的應用擁有多個進程:

      四大組件在AndroidManifest文件中註冊的時候,有個屬性android:process這裏可以指定組件的所處的進程。

      默認就是應用的主進程。指定爲別的進程之後,系統在啓動這個組件的時候,就先創建(如果還沒創建的話)這個進程,然後再創建該組件。打印出它的進程名稱:重載Application類的onCreate方法即可。

     設置android:process屬性,要注意:如果是android:process=”:deamon”,以:開頭的名字,表示這是一個應用程序的私有進程,否則它是一個全局進程。私有進程的進程名稱是會在冒號前自動加上包名,而全局進程則不會。一般我們都是有私有進程,很少使用全局進程。


多進程App的優點:

首先,多一個或多個進程android應用的可用內存可以成倍的增加,多餘一些消耗內存的應用來說是比較好的解決方案,例如圖片視頻處理,安全掃描等等;

其次,多個進程應用在被系統low memory killer終止時,可以儘量讓應用的某個進程能存活;

最後,多進程的應用可以儘量做到一定程度的互相保活。


多進程App的缺點:

問題一:多進程的應用初始化是同一個入口,需要根據進程判斷和區分初始化動作。難度係數:★

問題二:進程間通訊的複雜度要大於線程間通訊,當然手段有很多可以解決。AIDL和Broadcast都可以解決這個問題,但是到遇到傳遞大數據時你會發現基於Binder的這兩種實現方式也會遇到問題。難度係數:★★

問題三:進程間數據訪問不同步,受限於sqlite和sharedpreference的功能,多進程對於這兩個存儲介質的訪問會導致數據不同步的問題產生。如果用到webview你會發現cookiemanager對於cookie的管理在多進程內也會存在問題。難度係數:★★★


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章