2010-12-02 11 views
5

Wenn ich auf die Benachrichtigung in der Statusleiste klicke startet es eine Aktivität, aber das Verhalten ist seltsam. Wenn sich meine App im Vordergrund befindet und ich auf die Benachrichtigung klicke, wird die Benachrichtigungsabsicht einmal ausgelöst. Wenn sich meine App im Hintergrund befindet, wird die Benachrichtigungsabsicht zweimal ausgelöst. Wenn ich die App verlasse (dh alle Aktivitäten wurden durch Drücken der Zurück-Taste ausgelöst), wird die Benachrichtigungsabsicht einmal ausgelöst. Kann mir jemand dieses Verhalten erklären? Der Code-Snippet ist wie folgt:Android-Benachrichtigung startet die gleiche Aktivität zweimal

_notification = new Notification(icon_id, "Ticker Text", System.currentTimeMillis()); 
_showActivityIntent = new Intent(); 
_showActivityIntent.setAction(MyActivityName); 
_showActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK + Intent.FLAG_ACTIVITY_NO_HISTORY); 
_showActivityPendingIntent = PendingIntent.getActivity(context, 0, _showActivityIntent, 0); 
_notification.setLatestEventInfo(context, "My title", "My text", _showActivityPendingIntent); 
_notificationMgr.notify(notificationId, _notification); 

Antwort

9
_showActivityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

bereits. Es verhindert mehrere Instanzen derselben Aktivität. Du kannst das auch in das Manifest schreiben

+2

Ich werde es ausprobieren, aber können Sie erklären, warum die gleiche Aktivität zweimal gestartet wird? – pankajagarwal

+0

http://developer.android.com/guide/topics/fundamentals.html#acttask. Wenn Sie die Dokumentation lesen, wird klar gesagt, was jede Flagge tut. – Varun

+0

Aber warum werden die 2 an erster Stelle gestartet. Das scheint eine Arbeit zu sein, keine Lösung. –