5 Stimmen

OnNewIntent wird in JellyBean nicht aufgerufen.

Ich sehe einen Unterschied im Verhalten von onNewIntent-Aufrufen zwischen 2.3.4 und 4.2.

Ich habe eine Aktivität mit launchMode=singleTask. Gemäß meinem Verständnis davon, wie singleTask funktioniert, sollte jedes Mal, wenn die Aktivität aus der Task-Liste wiederhergestellt wird, onNewIntent aufgerufen werden.

Das passiert auf 2.3.4 (LG P990) folgendermaßen, wenn ich eine Aktivität starte, auf "Home" drücke, um sie in den Vordergrund zu bringen, und sie dann aus der Task-Liste wiederherstelle (lange auf "Home" drücken):

D/NewIntent(23314): onPause
D/NewIntent(23314): onNewIntent
D/NewIntent(23314): onResume
D/NewIntent(23314): onPause
D/NewIntent(23314): onNewIntent
D/NewIntent(23314): onResume

Das Gleiche auf 4.2 (Nexus 4):

D/NewIntent(12960): onPause
D/NewIntent(12960): onResume
D/NewIntent(12960): onPause
D/NewIntent(12960): onResume

Wie Sie sehen, wird onNewIntent nicht aufgerufen.

Kann mir jemand erklären, was hier passiert?

1voto

Kolkoltan Punkte 11

Ich hatte das gleiche Problem mit einem Galaxy Nexus auf 4.2.2. Der Code wurde auf einem emulierten Nexus S (API 15) entwickelt. Letztendlich habe ich die Logik von onNewIntent() nach onResume() verschoben.

1voto

CoastalB Punkte 625

Während meiner Kopfschmerzen beim Versuch, dieses Dilemma zu lösen Re-showing-a-singletask-activity musste ich einen "Zwischenhändler" erstellen - d.h. einen separaten (Self) IntentService, der über seine onHandleIntent-Methode ein Bundle empfangen würde und dann sofort einen neuen Intent (zu Ihrer singleTask Aktivität) auslösen würde.

Ich habe gerade auf Geräten mit den Versionen 2.3.7 und 4.1.2 getestet - onNewIntent wurde jedes Mal auf der singleTask Aktivität aufgerufen.

hth

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X