12
votes

Extras incorrects reçus avec toutes les intentions mais le premier

J'ai une petite application qui peut être utilisée pour définir des rappels pour les événements futurs. L'application utilise un alarmManager pour définir le temps nécessaire lorsque l'utilisateur doit être rappelé. Lorsque l'alarme s'éteint, un Broadcastructeur enregistre cela et démarre à son tour un service pour informer l'utilisateur via un toast et une notification dans la barre d'état.

Pour afficher les informations correctes dans la notification et le toast, des informations supplémentaires. est passé avec l'intention. La première fois qu'un rappel est enregistré, les informations reçues par le BroadcastructeurIver et transmises au service sont correctes. Mais pour chaque rappel suivant (c'est-à-dire chaque nouvelle intention reçue par le BroadCastraCeiver), ces informations restent les mêmes même lorsque les informations envoyées sont différentes. P>

Par exemple, si la chaîne "FOO" est mise en sus. Avec la première intention, "FOO" est correctement extraite par le Broadcastructeur. Si "bar" est mis en extra dans la deuxième intention, "FOO" est toujours extraite par le BroadCastraCeiver. p>

Ceci est le code qui enregistre l'alarme et transmet l'intention (classe UI principale): p> xxx pré>

la méthode onreceive () - méthode dans la radiodiffeuse Classe: P>

<receiver android:name=".AlertReceiver">
        <intent-filter>
            <action android:name="com.aspartame.quickAlert.ACTION_SET_ALARM" />
        </intent-filter>
    </receiver>


0 commentaires

3 Réponses :


28
votes

essayer d'ajouter flag_update_current à votre en PLANDINTENT lorsque vous le créez via getBroadcast () .


0 commentaires

9
votes

Les réponses ci-dessus sont correctes, mais elles manquent d'explication. Il convient de noter cette partie de la partie du Documentation en pelage :

Un pancarte lui-même est simplement une référence à un jeton maintenu par le système décrivant les données d'origine utilisées pour la récupérer. ... Si la création d'une application rétrécit ultérieurement rétricit le même type de PattingSintent (même fonctionnement, d'action, de données, de catégories et de composants identiques, et de mêmes drapeaux), il recevra un pallinant représentant le même jeton

Notez que les données "supplémentaires" sont spécifiquement non incluses dans le concept de presse-identité!


1 commentaires

Wow, j'étais vraiment surpris quand j'ai trouvé ça. Merci pour l'explication! Tu m'as sauvé beaucoup de maux de tête.



5
votes

1 commentaires

En plus de cela, c'est bien si vous utilisez Flag_update_Current aussi.