2017-10-28 7 views
2

Ich habe eine Aktivität, die launchMode = singleInstance ist. Auf Android 8 Oreo, etwa 30% der Zeit, bekomme ich 2 separate Starts der Aktivität. Sie sind verschiedene Objektinstanzen und die erste erhält keine onNewIntent(), wenn die zweite gestartet wird.singleInstance Aktivität zweimal intermittierend auf Android 8 Oreo

Wenn ich den ActivityManager auch von der zweiten gestarteten Aktivität abfrage, wird die erste nicht gemeldet.

Ich starte die Aktivität von einem Hintergrunddienst, da einige Push-Messaging beteiligt sind.

Ich protokolliere auch, um sicherzustellen, dass nur ein context.startActivity() passiert.

In logcat, wenn dies geschieht, ich die folgende Warnung auf früheren Versionen

10-27 18:38:49.153 379-3304/? W/ActivityManager: Activity ActivityRecord{a21333f u0 my.package.name/my.package.name.MyActivity t1409} being launched, but already in LRU list 

Dies ist Android O spezifisch und funktioniert alles sehen.

Irgendwelche Hilfe geschätzt, schlug meinen Kopf gegen die Wand auf dieser für eine Weile ... wenn es einen bekannten Android Bug für diese bitte lass es mich wissen! Ich habe nichts gefunden

Antwort

0

Am Ende konnte ich nicht verhindern, dass die zweite Aktivität gestartet wird. Ich musste es tolerieren können, dass die Aktivität zweimal gestartet wurde.

Die erste Aktivität wird onCreate() zu onResume() dann ist es weg. Wie wirklich ohne sogar ein onPause() gegangen.

Die zweite Aktivität ruft die onCreate() direkt nach der ersten onResume(). Diese zweite Aktivität durchläuft die normalen Lebenszyklen und ist in Ordnung.

Das Android-Betriebssystem muss erkennen, dass es die zweite Instanz nicht gestartet haben sollte, so dass es die erste Instanz schwer tötet ... seltsam

Verwandte Themen