2010-12-30 11 views
1

Ok,Android Benachrichtigung wird laufend mit bestimmten Flags

Möglicherweise eine andere bizare undokumentierte Marotte von Android, aber ich bin der Suche nach etwas ganz merkwürdig, wenn Fahnen meiner Benachrichtigung Hinzufügen ...

Wenn ich dies tun:

Dann erscheint die Benachrichtigung als eine einmalige, klicken Sie Abbrechen ist und Sie können es auf die normale Weise löschen.

Wenn ich aber hinzufügen, diese Flags

Notification notification = new Notification(R.drawable.status_icon, "[Ticker Text]",System.currentTimeMillis()); 

    PendingIntent intent = PendingIntent.getActivity(this, 0, new Intent(this, CarparkScreen.class), 0); 

    notification.setLatestEventInfo(AlertService.this,"[Title]", "[Detail]", intent); 

    notification.flags = Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS; 

    mNM.notify(NOTIFICATION_BREACH, notification); 

Es schafft eine laufende Benachrichtigung, obwohl es keine laufende Flagge zu sein !!

Ich denke, es ist eigentlich die DEFAULT_VIRBATE Flag, die dies verursacht, die zunächst ich war, weil ich keine Vibrationsberechtigungen hatte, aber ich habe das jetzt hinzugefügt, aber es immer noch die Benachrichtigung wird fortgesetzt.

Urgh !!!!

Kann jemand anderes das neu erstellen? Es scheint so ein offensichtlicher Anwendungsfall zu sein, ein Fehler oder eine Eigenart zu sein.

Ich benutze tatsächlich eine laufende Benachrichtigung gleichzeitig mit dem Versuch, eine nicht fortlaufende Benachrichtigung oben zu erstellen, aber das sollte wirklich nicht dazu führen, da ich neue Instanzen von allem außer dem NotificationManager benutze. Die ID im obigen Code unterscheidet sich auch von der laufenden Benachrichtigung.

Irgendwelche Ideen sehr geschätzt! :)

Andy.

Antwort

4

Es erstellt eine laufende Benachrichtigung, obwohl es keine laufende Flagge gibt !!

Das Feld flags erhält FLAG_ Konstanten. Das defaults Feld erhält DEFAULT_ Konstanten. Sie setzen DEFAULT_ Konstanten in das Feld flags. Versuchen Sie, Ihren Code zu ändern, um das Feld defaults zu verwenden.

+0

Spot auf! Danke vielmals! Fühle mich jetzt irgendwie albern! lol. Denken Sie, es gibt ein paar Beispiele rund um das Internet, von denen ich diesen Fehler kopiert haben muss! Danke vielmals! :) – Andy

+0

@Andy: Ich bin mir nicht sicher, warum Android Enums für solche Sachen nicht verwendet, da (ich denke) sie dieses Zeug zur Kompilierzeit fangen würden. – CommonsWare

+0

@CommonsWare Ich bin mir sicher, dass du es schon gesehen hast, aber sie haben einen Blog hinzugefügt, wie enums mehr Speicher in ihrem seither hinzugefügten [Speicherbelegungsdokument] verwenden (http://developer.android.com/training/articles/ memory.html # Overhead). – dcow

Verwandte Themen