Прошу прощения, если это глупый вопрос, у меня просто странное поведение в производстве, которое можно объяснить, если был вызван как-то onSaveInstanceState
, но onCreate
не был (или, по крайней мере, не закончил выполнение).Можно ли вызывать SaveInstanceState до завершения операции onCreate()?
Вот код:
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;
}
Я иногда (очень редко) получение NPE в onSaveInstanceState
, имеющий нулевую launchedFrom .. Спасибо за вашу помощь ..
Можете ли вы сложить по коду то, что вы делаете, в onSaveInstanceState и onCreate и onRestoreInstanceSate, выполненное в состоянии активности –
Я предполагаю, что это будет связано с сбором мусора. Создается ли этот «NPE» после того, как вы положили приложение например, в фоновом режиме? – RafaelC
У нас есть приложение с ~ десятью тысячами DAU. Это случается раз или два раза в день. Я не знаю, что они делают. Мы можем жить с ним, но меня это все еще интригует. –