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.
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:
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.
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.
Wenn Sie NullPointerException
in onNewIntent()
method erhalten, dann ist filtered
object wahrscheinlich null.
Probieren Sie diesen Weg
%Vor%Tags und Links android android-activity nullpointerexception onnewintent