Maison > Questions et réponses > le corps du texte
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
的实例,在进程com.lib.aidl.SharedService
dans le système.
Mais la situation réelle est qu'il existe deux SharedService
的实例,它们都在进程名为com.lib.aidl.SharedService
processus, mais les identifiants de processus sont différents. pourquoi donc?
Je souhaite maintenant qu'une seule SharedService
的实例,当第二次调用startService
时回调onStartCommand
méthode apparaisse dans le système. Est-ce possible ?
PHP中文网2017-05-16 13:23:35
将
android:process="com.lib.aidl.SharedService"
替换成
android:process=":com.lib.aidl.SharedService"
试试
注意,加了个 ':'
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.