AndroidManifest.xml的Service元素 android:process設置

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 proces s 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 processIf 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",沒有「:」分號的,則建立全局進程,不一樣的應用程序共享該進程。
相關文章
相關標籤/搜索