Я пытаюсь восстановить свое приложение после его смерти в фоновом режиме. Он всегда сбой при попытке доступа к переменной «config», потому что он является нулевым, даже после того, как он был сохранен на onSaveInstanceState (он всегда есть, я протестировал его в режиме отладки, и завышенный объект имеет объект внутри своей карты).Bundle savedInstanceState parcelable object null = null при убийстве приложения в фоновом режиме
Что меня смущает, так это то, что он отлично работает на корпусе вращения. Поэтому я думаю, что нет ничего плохого в построении объекта из посылки. Это просто не работает, когда я убираю приложение в фоновом режиме.
Когда я записываю saveInstanceState в onCreate после того, как я убью приложение в фоновом режиме, Config.BUNDLE возвращает null = null (no key, no value), но Account.BUNDLE, который является похожим объектом, не поврежден.
Кроме того, я попытался добавить еще один объект String в savedInstanceState, и он также будет сохранен правильно.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
Config config = savedInstanceState.getParcelable(Config.BUNDLE);
Config.setInstance(config);
Account account = savedInstanceState.getParcelable(Account.BUNDLE);
Account.setInstance(account);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable(Config.BUNDLE, Config.getInstance());
outState.putParcelable(Account.BUNDLE, Account.getInstance());
}
'onSaveInstanceState' и' Bundle savedInstanceState' предназначены для случаев вращения или другой, очень временный, уничтожить/воссоздают сценарии. Убивание приложения в фоновом режиме было бы эквивалентно вытягиванию батареи, насколько это касается вашего приложения, поэтому ни один из методов жизненного цикла не является полезным в этом сценарии. – DeeV
Я думаю, что вам нужно привести ваши параметры пакета в Config –