70 votes

Devrais-je utiliser android: process = ": remote" dans mon récepteur?

J'ai un BroadcastReceiver qui est appelé de temps en temps, et j'ai remarqué que beaucoup de gens utilisent

 android: process =":remote" 
 

dans leur récepteur. Le mien est utilisé pour vérifier certaines choses et si les conditions correspondent, activez une alarme. Ma question est la suivante: dois-je utiliser la ligne que j'ai affichée ci-dessus dans mon manifeste? Et si oui, quels sont les avantages de le faire?

165voto

ddewaele Points 11888

Par la définition de votre récepteur android:process=":remote" vous exécutez votre récepteur dans un processus différent (= VM). Pour les cas d'utilisation, vous n'avez pas besoin d'exécuter ce dans un processus différent, et tout ce que vous voulez faire peut probablement fonctionner juste une fine localement (dans votre APK processus).

L'inconvénient de l'utilisation d' android:process=":remote" , c'est que vous avez besoin de ressources supplémentaires pour qu'il fonctionne (dans ce cas, un processus distinct). Ce faisant, vous êtes essentiellement en traitant avec 2 VMs, et certains modèles comme des singletons, les champs statiques ne peuvent pas être partagés entre votre application et de votre service à distance.

L'avantage de l'utilisation de android:process=":remote" , c'est que pour certains cas d'utilisation, il peut être utile de démarrer un service qui va continuer à courir (dans son propre processus) après que vous avez de l'arrêt de votre application, ou si vous voulez des clients distants pour être en mesure de lier à votre service. Votre récepteur de radiodiffusion ne va pas bloquer vos applications thread principal lors de l'exécution dans un processus séparé lors de l'appel de la onReceive() méthode (toutefois, il existe d'autres moyens de mise en œuvre de ce).

J'ai trouvé que la plupart du temps, la plupart des cas d'utilisation, vous pouvez vous en sortir sans l'aide d' android:process="remote".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X