Можно ли вызвать onSaveInstanceState () вручную? - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь сохранить и восстановить мои Activity onSaveInstanceState() при нажатии кнопки "Назад".Я читал, что по умолчанию он не сохраняется, поскольку предполагается, что пользователь нажал кнопку Activity при нажатии назад.Тем не менее, в моем приложении это не тот случай, и я хотел бы вызвать onSaveInstanceState() изнутри:

@Override
public void onBackPressed() {
    super.onBackPressed();
}

Это, однако, сохраняется при повороте экрана.Это я прочитал и по умолчанию.

Я потратил пару дней, пытаясь взломать это, но я просто никуда не попал.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Я рекомендую сохранять данные такого рода и сценария, используя SharedPreferences.Таким образом, работа saveInstanceState () выполняется вручную.Эти данные переживают безвременную смерть приложения, изменение конфигурации и т. Д.

0 голосов
/ 25 сентября 2018

Я пытаюсь сохранить и получить свои действия сохраненного экземпляра при нажатии кнопки «Назад».Я прочитал, что по умолчанию он не сохраняется, поскольку предполагается, что пользователь завершил действие при нажатии назад.

Все правильно.Более того, в этом случае Android предполагает, что приложение больше не требуется для пользователя, поэтому оно может безопасно завершить процесс приложения.

Может ли saveInstanceSate вызываться вручную?

Конечно. метод protected.Но это не имеет смысла согласно вашему требованию.В вашем случае, даже если «ручное» Bundle, которое вы передадите в качестве параметра метода, будет сохранено системой, данные, находящиеся в ОЗУ, будут сразу же удалены самим процессом приложения из-за обратного нажатия.

Однако при повороте экрана оно сохраняется.

Также верно.В этом случае Android предполагает, что приложение все еще используется, поэтому оно заботится (частично) о восстановлении своего состояния для вас.

Однако в моем приложении это неслучае, и я хотел бы сохранить InstanceState из onBackPressed().

Я сомневаюсь, что вы должны бороться с идиомой ОС. Android предоставляет вам альтернативные варианты восстановления состояния приложения (таким образом, пользователь «думал», что он / она вернулся в ваше приложение именно в том месте, где оно было оставлено), например, SharedPreferences, база данных, внутреннее хранилище и т. Д.. Рекомендую придерживаться ОС идиом.

...