Frage zu Service/Notifikation (Beispiel "FakePlayer")

C

cstarling

Neues Mitglied
0
Hallo,

Ich habe eine Problem mit Service/Notifikation
Meine Anforderung ist: Ich will ein Programm dauerhaft am Laufen haben.

Ich habe mich daher an das gern zitierte Beispiel FakePlayer
https://github.com/commonsguy/cw-android/tree/master/Notifications/FakePlayer
gehalten, da das meinen Wünschen entspricht.

Meine eigenen Programm-Versuche die sich an das Beispiel halten, aber auch das Original hat folgendes Verhalten, welches ich nicht verstehe:

Wenn das Programm gestartet wird und dann der Service gestartet wird erscheint wie gewünscht ein Eintrag in der Notifikationbar.
Wenn das Programm im Hintergrund ist kann man es über die Notifikationbar wieder hochholen, auch mehrfach.
Man kann es auch über das Homescreen-Icon hochholen mit dem man es gestartet wurde, auch mehrfach.
Soweit, sogut...

Bei folgender Abfolge:
-Programmstart und Servicestart
-Programm in den Hintergrund legen
-das Programm mit der Notifikationbar wieder hochholen
-Programm in den Hintergrund legen
-das Programm über das Homescreen-Icon hochholen
Tritt folgendes Probleme auf:
Es wird nicht das laufende Programm hochgeholt, sondern eine neue Instanz gestartet (es wird onCreate ausgeführt). Diese beiden Instanzen kann man dann mit 2x Zurück-Taste getrennt beenden.

Dieses Verhalten tritt grundsätzlich auf, wenn man die Verwendung der beiden Möglichkeiten das Programm wieder hochzuholen mischt!

Kann dieses Verhalten jemand nachvollziehen?
Was habe ich da falsch verstanden/was habe ich falsch gemacht?

Meine Vermutung ist, das da etwas mit den Flags bei Intent oder der Notifikation nicht stimmt.
Allerdings habe ich an mehreren Stellen im Internet genau diese Verwendung der Flags gesehen.

ORIGINAL-KODE "FakePlayer"
Notification note=new Notification(R.drawable.stat_notify_chat, "Can you hear the music?", System.currentTimeMillis());
Intent i=new Intent(this, FakePlayer.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pi=PendingIntent.getActivity(this, 0, i, 0);
note.setLatestEventInfo(this, "Fake Player", "Now Playing: \"Ummmm, Nothing\"", pi);
note.flags|=Notification.FLAG_NO_CLEAR;
startForeground(1337, note);

Gruß
cstarling
 

Ähnliche Themen

A
Antworten
1
Aufrufe
582
swa00
swa00
numanoid
Antworten
4
Aufrufe
1.546
numanoid
numanoid
SpeedySix
Antworten
13
Aufrufe
1.398
jogimuc
J
Zurück
Oben Unten