Problèmes liés à Android - Comment Android rend-il le service de la bibliothèque lib importée unique dans le système ?
巴扎黑
巴扎黑 2017-05-16 13:21:35
0
1
599

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时回调onStartCommandméthode apparaisse dans le système. Est-ce possible ?

巴扎黑
巴扎黑

répondre à tous(1)
洪涛

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal