2017-09-06 2 views
1

Est-ce un moyen pour enregistrer le récepteur de diffusion à exécuter dans un autre processus à partir du code? Comme si je le mettais dans le fichier manifeste avec l'attribut android: process = ": remote".enregistrer le récepteur de diffusion du code à l'exécution dans le processus à distance

intention registerReceiver (récepteur BroadcastReceiver, filtre IntentFilter)

inscrire un BroadcastReceiver pour être exécuté dans le fil de l'activité principale. Le récepteur sera appelé avec toute intention de diffusion correspondant au filtre , dans le fil d'application principal.

android: processus

... Si le nom attribué à cet attribut commence par deux points (« : »), un nouveau processus, privé à l'application, est créé quand il est nécessaire et le récepteur de diffusion s'exécute dans ce processus.

Répondre

1

Est-ce un moyen pour que le récepteur de diffusion de radiodiffusion fonctionne dans un autre processus à partir du code?

registerReceiver(), fait appel à un Context, travaille pour les émissions qui proviennent d'autres processus.

Cependant, registerReceiver() ne pas créer un autre processus lorsqu'une émission est reçue, qui est ce que android:process fait. android:process n'a rien à voir avec le processus que envoie la diffusion.

+0

Je ne pense pas que cela réponde à la question. Si vous avez manifestes-récepteurs enregistrés dans un processus différent avec des filtres d'intention implicites, vous devrez maintenant le migrer vers le code (selon Android 8). Je crois que sa question est de savoir comment le faire. Im face à ce même problème moi-même et à première vue il me semble que ce n'est pas possible et le ciblage sdk 26 ne permettra pas de filtres implicites sur les récepteurs enregistrés dans différents processus. – jvrodrigues

+1

@jvrodrigues: "Je crois que sa question est de savoir comment le faire" - ce n'est pas strictement possible. Vous devez avoir un processus séparé créé par d'autres moyens (par exemple, un service avec 'android: process'), puis appelez' registerReceiver() 'là-bas. – CommonsWare

+0

C'était ma conjecture, merci. – jvrodrigues