AndroidManifest.xml的Service元素 android:process设置!!!
2012-04-11 17:54
561 查看
AndroidManifest.xml的Service元素
<service android:name=".RemoteService" android:process=":remote">
<intent-filter>
<action android:name="com.demo.IMyService" />
</intent-filter>
</service>
这里的android:process=":remote",一开始我没有添加的,在同一个程序里使用IPC,即同一个程序作为客户端/服务器端,结果运行mRemoteService = IMyService.Stub.asInterface(service);时提示空指针异常。观察了人家的在不同程序里进行IPC的代码,也是没有这个android:process=":remote"的。后来在官方文档http://androidappdocs.appspot.com/guide/topics/manifest/service-element.html里了解到(留意第二段文字):
android:process
The name of the process where the service is to run. Normally, all components of an application run in the default process created for the application. It has the same name as the application package. The <application> element's process attribute can
set a different default for all components. But component can override the default with its own process attribute, allowing you to spread your application across multiple processes.
If the name assigned to this attribute begins with a colon (':'), a new process, private to the application, is created when it's needed and the
service runs in that process[/u]. If the process name begins with a lowercase character, the service will run in a global process of that name, provided that it has permission to do so. This allows components in different applications
to share a process, reducing resource usage.
也就是说android:process=":remote",代表在应用程序里,当需要该service时,会自动创建新的进程。而如果是android:process="remote",没有“:”分号的,则创建全局进程,不同的应用程序共享该进程。
<service android:name=".RemoteService" android:process=":remote">
<intent-filter>
<action android:name="com.demo.IMyService" />
</intent-filter>
</service>
这里的android:process=":remote",一开始我没有添加的,在同一个程序里使用IPC,即同一个程序作为客户端/服务器端,结果运行mRemoteService = IMyService.Stub.asInterface(service);时提示空指针异常。观察了人家的在不同程序里进行IPC的代码,也是没有这个android:process=":remote"的。后来在官方文档http://androidappdocs.appspot.com/guide/topics/manifest/service-element.html里了解到(留意第二段文字):
android:process
The name of the process where the service is to run. Normally, all components of an application run in the default process created for the application. It has the same name as the application package. The <application> element's process attribute can
set a different default for all components. But component can override the default with its own process attribute, allowing you to spread your application across multiple processes.
If the name assigned to this attribute begins with a colon (':'), a new process, private to the application, is created when it's needed and the
service runs in that process[/u]. If the process name begins with a lowercase character, the service will run in a global process of that name, provided that it has permission to do so. This allows components in different applications
to share a process, reducing resource usage.
也就是说android:process=":remote",代表在应用程序里,当需要该service时,会自动创建新的进程。而如果是android:process="remote",没有“:”分号的,则创建全局进程,不同的应用程序共享该进程。
相关文章推荐
- AndroidManifest.xml的Service元素 android:process设置
- AndroidManifest.xml的Service元素 android:process设置
- android 在 AndroidManifest.xml 里 Service 元素的常见选项
- Android的AndroidManifest.xml android:process元素说明
- AndroidManifest.xml android:process元素说明
- Android的AndroidManifest.xml android:process元素说明
- AndroidManifest.xml 各元素作用目录(持续更新)
- AndroidManifest.xml 设置
- Android manifest.xml 中元素含义
- AndroidManifest.xml权限设置
- 获取AndroidManifest.xml中<meta-data>元素
- AndroidManifest.XML文件功能、元素、标签汇总
- 在AndroidManifest.xml文件中设置Android程序的启动界面方法
- Android读取AndroidManifest.xml中的<meta-data>元素
- AndroidManifest.xml权限设置
- AndroidManifest.xml文件详解(service)
- Android配置清单文件Manifest.xml的常用设置
- 在AndroidManifest.xml文件中设置Android程序的启动界面方法
- AndroidManifest.xml activity属性设置大全
- android manifest.xml中元素含义