Activité relaxante sur la réception de la gcm de notification push
Comment actualiser activité sur la réception de la gcm, notification push si mon application est ouvrir. J'ai une activité qui contient listview rempli avec des données à partir du serveur. Je veux actualiser mon activité (ici l'ajout d'un élément à la liste) , si je reçois gcm de notification push(qui contient aussi des données).
- Une alternative est d'ajouter minuterie que périodiquement des demandes de serveur et mise à jour de la liste de l'adaptateur de données mais je ne veux pas parce qu'il va prendre beaucoup de ressources.
- Ai-je besoin d'ajouter récepteur de radiodiffusion qui va déclencher sur la réception de la gcm pousser laquelle la poursuite de la demande pour de nouveaux serveurs de données et mise à jour de mon activité d'INTERFACE utilisateur?
Chers intervenants, veuillez lire attentivement la question, j'ai seulement besoin de actualiser la liste (si l'application est ouverte et que l'activité est ouverte) d'autre pas besoin de même.
- Dois-je demander à nouveau pour des données mises à jour..
- double possible de l'actualisation de l'activité
- pas de son pas, et même si c'est à cette question est plus claire que celle que vous avez suggéré
InformationsquelleAutor Amrit Pal Singh | 2014-03-07
Vous devez vous connecter pour publier un commentaire.
M'a fallu quelques heures pour comprendre. De poster ici au cas où quelqu'un quelqu'un d'autre a le même problème.
L'idée est que vous devez enregistrer votre activité en tant que récepteur de radiodiffusion. La façon la plus simple de le faire est comme suit:
Le code ci-dessus va dans l'activité que vous souhaitez "écouter" pour les événements.
Maintenant, comment faire pour envoyer des données à ce "auditeur"? Accédez à votre notification push gestionnaire(ou de l'endroit où vous souhaitez mettre à jour votre activité) et lorsque vous recevez un appel de notification de cette fonction:
Lorsque vous appelez la fonction ci-dessus, votre activité doit le recevoir.
Note: Votre activité doit être en cours d'exécution/ouvrir pour recevoir la diffusion intention
Note2: je suis passé à une bibliothèque appelée "otto". Il fait la même chose mais en plus facile, les émissions d'événements tout au long de la app. Voici un lien http://square.github.io/otto/
unique_name
lors de la création de l'intention elle-même commeIntent intent = new Intent("unique_name")
. Il n'a travaillé que lorsque j'ai mis leunique_name
comme une action à l'aideintent.setAction("unique_name")
.Je suis en supposant que votre
GCMBroadcastReceiver
est propre .fichier java?Aussi loin que l'actualisation d'une activité, j'aimerais aussi connaître la réponse à cette question.
Mais pour savoir si une activité donnée est active ou pas, de sens sur l'écran il suffit d'ajouter une
boolean
(appeler quelque chose comme "active") et l'a mis àtrue
dans votre activité estonResume()
de l'événement, et àfalse
dans leonPause()
événement:Votre
active
variable serait un booléen qui estglobal
oustatic
. De cette façon, vous savez si une activité donnée est en "première".Espère que ça aide un peu.
L'accepter réponse est tout à fait exact pour le "Rafraîchissant de l'activité sur la réception de la gcm de notification push" (j'ai upvoted trop). Mais si vous voulez mettre à jour une liste affichée, vous n'avez pas besoin d'un récepteur de radiodiffusion.
Votre GCM service d'écoute peut mettre à jour la base de données à l'aide d'un ContentProvider plutôt que d'insérer directement une requête sql.
Puis vous pouvez compter sur la notifyChange méthode sur la ContentResolver de faire le tour.
Si votre application est déjà en cours d'exécution, puis essayez de remplacer le
onNewIntent
méthodeSemble qu'il y ait un moyen plus facile. Dans le OnMessageReceived méthode de la GCM à l'écoute, il vous suffit de faire la mise à jour à partir de là, au lieu de l'envoi de la notification. Vous pouvez utiliser le même code que vous auriez utilisé si le traitement de la notification. Si vous êtes en train de faire StartActivity de l'auditeur, vous devez utiliser le ActivityFlags.NewTask drapeau.
De le résumer dans une seule phrase:
Si vous voulez vous rafraîchir activité, diffusion votre événement personnalisé lors de la notification arrive et registre votre activité comme récepteur de radiodiffusion de cet événement