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。如果这些应用程序再被设置成运行在一个相同的进程,它们便可以彼此访问对方的数据。  

 

 

 

 

posted @ 2014-01-20 16:02  Sudawei  阅读(5817)  评论(0编辑  收藏  举报