Aktivität onNewIntent Null-Zeiger-Ausnahme

8

Ich initialisiere meine Listen in meiner Aktivität onCreate () wie folgt:

%Vor%

Und wenn ich versuche, gefilterte Elemente von onNewIntent zu verwenden, bekomme ich manchmal eine Nullzeiger-Ausnahme.

%Vor%

Wie könnte es möglich sein?

Bearbeiten: Der Startmodus meiner Aktivität ist SingleTask

Bearbeiten 2:

Ich kann keine nützlicheren Protokolle mehr senden, da dieser Absturz in Produktion ist. Nur ich bekomme Stofflogs.

Vielen Dank für Ihre Hilfe, aber ich kann den ganzen Code wegen der Privatsphäre nicht einfügen.

Ich glaube, ich habe ein Problem bei der Verwendung von SingleTask-OnCreate-OnNewIntent. Einfach ich versuche, meine App von Benachrichtigung mit einem Parameter zu öffnen entscheidet, welches Fragment geöffnet wird, wenn der Benutzer zur Aktivität navigiert.

Haben Sie Beispiele dazu, die SingleTask-OnCreate-OnNewIntent-Implementierungen enthalten?

Danke an alle für die Hilfe.

    
savepopulation 24.09.2015, 09:11
quelle

3 Antworten

2

Das Team von Open Whisper Systems stieß auf das gleiche Problem:

Ссылка

Sie denken, dass es durch das Android-Framework verursacht wird, das onNewIntent() kurz nach onCreate() aufruft, auch wenn Sie finish() von onCreate() aufrufen. Dies führt schließlich dazu, dass null Objekte in onNewIntent() und dann NullPointerException verwendet werden, da die Objekte nicht in der üblichen onCreate() eingerichtet wurden. Es scheint ein seltenes Szenario oder eine Wettlaufsituation zwischen onCreate() und onNewIntent() zu sein.

Sie haben es offenbar dadurch korrigiert, dass sie nach isFinishing() in onNewIntent() gesucht haben, um zu verhindern, dass onNewIntent() weitergeht:

%Vor%

Quelle 1: Ссылка

Quelle 2: Ссылка

Update: 10. November 2017: Dieses Problem scheint viel seltener zu passieren, wenn die Build-Tools in app / build.gradle:

aktualisiert wird %Vor%

Es schien häufiger mit älteren Build-Tools wie buildToolsVersion '23.0.3' zu geschehen, aber die Korrektur wird immer noch benötigt, wie es in seltenen Fällen immer noch passiert.

    
Mr-IDE 20.03.2017, 21:52
quelle
1

Behalten Sie den Lebenszyklus im Hinterkopf, vielleicht kehren Sie von einem Punkt, an dem onCreate () nicht aufgerufen wird, zu Ihrer Aktivität zurück (zum Beispiel, wenn Sie launchMode = singleTask oder etwas in Ihrem Manifest gesetzt haben). Vielleicht initialisiere / repopulate deine ArrayList in onResume () und überprüfe auch, ob es nicht null ist, auf Resume () wird sicher aufgerufen, wenn du zu deiner Aktivität zurückkehrst.

    
A Honey Bustard 24.09.2015 09:20
quelle
0

Wenn Sie NullPointerException in onNewIntent() method erhalten, dann ist filtered object wahrscheinlich null.

Probieren Sie diesen Weg

%Vor%     
Pragnesh Ghoda シ 24.09.2015 09:19
quelle