2 votes

Modèle de notification d'événements aux activités et aux services en même temps

J'aimerais connaître le meilleur modèle pour le scénario suivant :

1) ActivityA contient un bouton qui réinitialise les données de l'application lorsqu'il est pressé.

2) IntentServiceA , IntentServiceB y ActivityB veulent être informés de l'événement. IntentServiceA efface la base de données de l'application, IntentServiceB supprime certains fichiers du stockage interne et ActivityB si elle est arrêtée, supprimer tous les messages en attente d'un interne donné Handler

Voici ma conception actuelle de la situation :

1) ActivityA utilise un sendBroadcast() avec une action spécifique (disons ACTION_RESET_DATA) pour notifier l'évènement

2) ActivityB a un privé intérieur BrodcastReceiver qui est enregistré sur le onCreate() car elle doit répondre à l'action même lorsque l'activité est arrêtée.

3) IntentServiceA y IntentServiceB ont également BroadcastReceivers mais ils sont déclarés comme public static et déclarés dans AndroidManifest.xml. De cette façon, ils sont accessibles sans aucun enregistrement sur le service correspondant. Tous les BroadcastReceiver est de lancer le service externe qui, à son tour, vérifie l'action de l'intention par rapport à ACTION_RESET_DATA dans l'interface utilisateur. onHandleIntent() méthode

Bien que cela fonctionne, cette approche présente deux problèmes principaux :

  • Il existe un filtre d'intention déclaré sur le manifeste qui n'est pas accessible aux autres applications. En fait, les deux IntentService et intérieur BroadcastReceiver sont déclarés avec exported="false"
  • Je ne peux pas utiliser LocalBroadcastManager car il n'est pas compatible avec BroadcastReceivers déclaré dans AndroidManifest.xml. Ce serait souhaitable puisque la diffusion en question est interne à mon application.

Je pourrais juste enlever le BroadcastReceiver des deux IntentServices et les démarrer manuellement via startService de ActivityA et laisser ActivityB intacte, mais que se passe-t-il si le nombre de services augmente ? Je devrais inclure du code pour les démarrer tous ? En fait, j'ai quelques autres cas comme celui-ci dans mon application et je ne suis pas sûr de la façon de les gérer correctement.

Des conseils ?

0voto

K D Points 104

Essayez sharedPreferences. Lorsqu'il y a un changement de valeur, les activités seront notifiées.

http://developer.Android.com/reference/Android/content/SharedPreferences.OnSharedPreferenceChangeListener.html

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