Es tut mir leid, wenn es eine dumme Frage ist, ich habe nur ein seltsames Verhalten in der Produktion, die erklärt werden kann, wenn onSaveInstanceState
wurde aufgerufen, aber onCreate
war nicht (oder zumindest nicht fertig ausgeführt). HierKann SaveInstanceState aufgerufen werden, bevor onCreate() beendet wurde?
ist der Code:
private LaunchedFrom launchedFrom = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// some members initialization
if (savedInstanceState == null) {
Intent intent = getIntent();
launchedFrom = handleIntentAction(intent);
} else {
// Restoring saved state.
launchedFrom = LaunchedFrom.fromEvent(savedInstanceState.getString(BundleParams.KEY_LAUNCHED_FROM));
}
}
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(BundleParams.KEY_LAUNCHED_FROM, launchedFrom.getEvent());
}
private LaunchedFrom handleIntentAction(Intent intent) {
LaunchedFrom launchedFrom = LaunchedFrom.MAIN;
if (intent != null) {
// some logic to override launchedFrom
}
return launchedFrom;
}
Ich bin manchmal (ganz selten) bekommen eine NPE in onSaveInstanceState
ein Null-launchedFrom mit .. Vielen Dank für Ihre Hilfe ..
Können Sie nach Code codieren, was Sie in onSaveInstanceState und onCreate und onRestoreInstanceSate im Zusammenhang mit dem Status der Aktivität –
Ich denke, es wird etwas mit Müll sammeln zu tun haben .. Ist diese 'NPE' nach dem Ablegen Ihrer App ausgelöst im Hintergrund zum Beispiel für eine Weile? – RafaelC
Wir haben eine App mit ~ zehntausend DAUs. Dies geschieht vielleicht ein- oder zweimal am Tag. Ich weiß nicht, was sie tun. Wir können damit leben, aber es fasziniert mich immer noch. –