web-dev-qa-db-fra.com

Dois-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 quelques éléments et si les conditions correspondent, activer une alarme. Ma question est la suivante: dois-je utiliser la ligne que j'avais affichée ci-dessus dans mon manifeste? Et si oui, quels sont les avantages de le faire?

68
Jason

En définissant votre récepteur avec Android:process=":remote", Vous exécutez votre récepteur dans un processus différent (= VM). Pour les cas d'utilisation typiques, vous n'avez pas besoin de l'exécuter dans un processus différent, et tout ce que vous voulez faire peut probablement fonctionner très bien localement (dans votre processus APK).

L'inconvénient de l'utilisation de Android:process=":remote" Est que vous avez besoin de ressources supplémentaires pour qu'il s'exécute (dans ce cas, un processus distinct). Ce faisant, vous avez essentiellement affaire à 2 machines virtuelles, et certains modèles comme les singletons, les champs statiques ne peuvent plus être partagés entre votre application et votre service distant.

L'avantage d'utiliser Android:process=":remote" Est que pour certains cas d'utilisation, il peut être utile de démarrer un service qui continuera de fonctionner (dans son propre processus) après avoir fermé votre application, ou si vous voulez à distance clients pour pouvoir se lier à votre service. Votre récepteur de diffusion ne bloquera pas le thread principal de vos applications lors de l'exécution dans un processus distinct lors de l'appel de la méthode onReceive() (cependant, il existe d'autres façons de l'implémenter).

J'ai constaté que la plupart du temps, pour les cas d'utilisation les plus courants, vous pouvez vous en tirer sans utiliser Android:process=":remote".

162
ddewaele