onRestoreInstanceState вызывается, но не onSaveInstanceState?

У меня есть случай, когда мой onRestoreInstanceState() вызывается правильно, но по какой-то причине предыдущий onSaveInstanceState() не вызывается.

Ситуация в том, что у меня есть действие, которое запускает другое действие. В это время устройство находится в портретной ориентации. Пока другое действие активно, устройство вращается. Затем он заканчивается, возвращаясь к моей деятельности. Поскольку ориентация изменилась, моя деятельность уничтожается и создается заново. Однако я никогда не вызываю метод onSaveInstanceState() перед вызовом для уничтожения. Я вижу следующее:

завершить (предыдущая активность) onDestroy (моя активность) onCreate onRestoreInstanceState onResume

А потом, конечно, я спотыкаюсь о NPE и разбиваюсь.

Если я просто поворачиваюсь, пока моя активность активна, я получаю вызов OnSaveInstanceState(), как и ожидал. Только не тогда, когда он переключается обратно на мою деятельность с другой деятельности.

Это известная проблема или есть что-то еще, что я могу сделать, чтобы обойти это?


person BJV    schedule 02.08.2014    source источник
comment
Может помочь вам: stackoverflow.com/questions/7320785/   -  person mmlooloo    schedule 03.08.2014
comment
Я считаю, что в моем случае действие не уничтожается прямым действием пользователя, например «Назад», — оно уничтожается из-за изменения ориентации, которое произошло, когда другое действие было сверху. Когда эта активность завершается, она уничтожает мою активность, потому что ориентация другая, а затем воссоздает ее. Я вызываю свой метод onRestoreInstanceState(), но не вызов onSaveInstanceState().   -  person BJV    schedule 03.08.2014