Tout d'abord, j'ai une bibliothèque lib, qui définit un Service?:
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true">
<service
android:name=".SharedService"
android:process="com.lib.aidl.SharedService"
android:enabled="true"
android:exported="true">
</service>
</application>
Maintenant, ajoutez deux applications qui ont introduit cette bibliothèque, puis les appelez dans leurs codes respectifs?:
startService(new Intent(context, SharedService.class))
Ce que je pense maintenant, c'est qu'il ne devrait y en avoir qu'un seul SharedService
的實(shí)例,在進(jìn)程com.lib.aidl.SharedService
dans le système.
Mais la situation réelle est qu'il existe deux SharedService
的實(shí)例,它們都在進(jìn)程名為com.lib.aidl.SharedService
processus, mais les identifiants de processus sont différents. pourquoi donc?
Je souhaite maintenant qu'une seule SharedService
的實(shí)例,當(dāng)?shù)诙握{(diào)用startService
時(shí)回調(diào)onStartCommand
méthode apparaisse dans le système. Est-ce possible??
將
android:process="com.lib.aidl.SharedService"
替換成
android:process=":com.lib.aidl.SharedService"
試試
注意,加了個(gè) ':'
Le nom du processus sur lequel le service doit être exécuté. Normalement, tous les composants d'une application s'exécutent dans le processus par défaut créé pour l'application. Il porte le même nom que le package de candidature. L'<application> L'attribut process de l'élément peut définir une valeur par défaut différente pour tous les composants. Mais le composant peut remplacer la valeur par défaut avec son propre attribut de processus, vous permettant ainsi de répartir votre application sur plusieurs processus.
Si le nom attribué à cet attribut commence par deux points (':'), un nouveau processus, privé de l'application, est créé lorsque cela est nécessaire et le service s'exécute dans ce processus. Si le nom du processus commence par un caractère minuscule, le service s'exécutera dans un processus global de ce nom, à condition qu'il en ait l'autorisation. Cela permet aux composants de différentes applications de partager un processus, réduisant ainsi l'utilisation des ressources.