android:process為耗資源操作指定一個新進程


 

 當有一些耗費內存比較多的操作時,可以通過android:process指定一個新的進程。保證程序運行。

 

例如:

一個后台長期運行的service:

 1 <service
 2             android:name="com.example.service.xxxxxService"
 3             android:exported="false" 
 4             android:persistent="true"
 5             android:process=":remote1">
 6             <intent-filter>
 7                 <action android:name="com.example.service.xxxxxService" 
 8                     android:priority = "1000"/>
 9             </intent-filter>
10         </service>

 

android:process

定義activity運行所在的進程名稱。一般情況下,應用的所有組件都運行在為應用創建的默認的進程中,該默認進程的名稱應用包名稱一致。通過定義<application>元素的“process”屬性可以為所有組件指定一個不同的默認進程。但是任意組件都可以重寫默認進程,以便實現多進程操作。

如果該屬性指定名稱以“:”開頭,則一個新的專屬於該應用的進程將會被創建。如果該進程名以小寫字母開頭,則為該activity提供權限以讓其在一個全局的進程中運行。這樣會允許多個應用的不同組件共用一個進程,以便節省資源。 

Android是支持多進程的,每個進程的內存使用限制一般為24MB的內存,所以當完成一些很耗費內存的操作如處理高分辨率圖片時,需要單獨開一個進程來執行該操作(上面的配置可以用來實現該操作)。即便如此,開發者還是不要隨意多開進程來耗費用戶的資源。(內存限制,有16MB24MB 32MB,很老的機型的內存限制會是16MB,這個具體還要再搜索下資料。。)

android:process可以針對一個組件(activity,broadcast等)。

#########################################################

設置該屬性可以使得本應用程序與其它應用程序共享相同的進程,僅僅當這兩個應用程序也共享一個擁有相同簽名的UserId。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:sharedUserId="android.uid.phone" >
與其它應用程序共享的一個Linux User Id的名字。
默認情況下,Android為每個應用程序分配一個唯一的User Id。然而,如果有多個應用程序都將該屬性設置為一個相同的值,那么它們將共享相同的Id。如果這些應用程序再被設置成運行在一個相同的進程,它們便可以彼此訪問對方的數據。  

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM