Ich habe ein Fragment, das den Zustand über setRetainInstance(true)
speichert. Dies ist sehr vereinfachten Code meines Fragment:Fragment savedInstanceState nicht null nach Aktivität von OS getötet
public class MyFragment extends Fragment {
private SomeData mData;
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
if (savedInstanceState == null) {
mData = new SomeData(getView());
} else {
mData.refresh(getView());
}
// More awesome code
}
}
}
Manchmal sind die App stürzt mit NullPointerException
- mein mData
plötzlich wird null
. Dies passiert, wenn ich die Anwendung falte und nach einiger Zeit zurückkehre.
Ich habe etwas Theorie. Nach einer Weile tötet OS die Activity
und die Fragment
(trotz setRetainInstance (true)
). Auf diese Weise wird ein neues Objekt meines Fragments erzeugt, wobei mData
durch null
initialisiert wird. Aber savedInstanseState
ist nicht gleich null. Daher überspringt das neue Fragment die Initialisierung und versucht, refresh(View)
auf der Nullreferenz aufzurufen.
Meine Frage: Was die savedInstanseState
Variable in der onActivityCreated(savedInstanceState)
Methode in meinem Schnipsel enthält, wenn OS die Aktivität (wenn App nicht auf dem Bildschirm) töten und neu nach der Rückkehr?