1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Notification soll im Hintergrund laufende Activity wieder holen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von renegade2k, 13.07.2012.

  1. renegade2k, 13.07.2012 #1
    renegade2k

    renegade2k Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    94
    Erhaltene Danke:
    4
    Registriert seit:
    06.01.2010
    Phone:
    HTC Sensation
    Ich habe eine "Main"-Activity, die beim starten der App geladen wird. Diese lädt "onCreate" ein Service (TrackService), welcher ein paar Berechnungen anstellt, während die App ausgeführt wird. In dieser Zeit kann man die Main-Acitivity per Home-Button auch in den Hintergrund stellen.

    An einem Bestimmten Punkt führt der Service die Methode "NoteBar" aus, welche den Benutzer über eine Notification über den Status der Berechnung informiert.

    Nun soll der Benutzer, wie gewohnt, die App. bzw. die Main-Activity per klick auf die Notification in den Vordergrund holen können.
    Bei mir passiert es jedoch, dass die Notification eine neue Main-Activity erstellt, was zur folge hat, dass die Variablen mit den initialen Werten belegt werden, anstatt die bereits vorgenommenen Werte wieder aufzugreifen.
    Beende ich nun die "neue" Main-Activity über den Back-Button, sehe ich sofort meine "alte" Main-Activity.

    Eventuell sieht ja jemand ein Fehler in meinem Code und kann mir ein Tipp geben, was ich falsch mache ...

    Die Methode befindet sich in der Service-Klasse.
    Code:
    public void noteBar(){
            notif = Context.NOTIFICATION_SERVICE;
            mNotificationManager = (NotificationManager) getSystemService(notif);
            int icon = R.drawable.ic_launcher;
            long when = System.currentTimeMillis();
            notification = new Notification(icon, contentText, when);
            contentTitle = "Achtung";
            notificationIntent = new Intent(this, Main.class);
            notification.flags |= Notification.FLAG_ONLY_ALERT_ONCE | Notification.FLAG_AUTO_CANCEL;
            contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
            notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
            mNotificationManager.notify(1, notification);
        }
    Zuvor wird "context" mit "getApplicationContext();" in der "onCreate" des Services initialisiert, sowie die ganzen Variablen mit "null" bzw bereits vordefinierten Werten, die vermutlich bei der Lösung des Problems keine Bedeutung haben
     
  2. strider, 14.07.2012 #2
    strider

    strider Erfahrener Benutzer

    Beiträge:
    208
    Erhaltene Danke:
    45
    Registriert seit:
    30.09.2011
    Phone:
    Nexus S
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    Sollte den gewünschten Effekt herbeiführen.
     
    renegade2k bedankt sich.
  3. renegade2k, 14.07.2012 #3
    renegade2k

    renegade2k Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    94
    Erhaltene Danke:
    4
    Registriert seit:
    06.01.2010
    Phone:
    HTC Sensation
    Ein Bekannter meinte noch, ich solle zusätzlich den Flag "FLAG_ACTIVITY_CLEAR_TOP" setzen.
    Wenn ich das aber so richtig lese, hat das zur Folge, dass alles, was nach der Main-Activity gestartet wurde geschlossen wird? Oder verstehe ich das falsch?
     

Diese Seite empfehlen