Может кто-нибудь объяснить, почему у меня такое странное поведение. До документации Bundle savedInstanceState
, который установлен в onSaveInstanceState()
, жив до тех пор, пока приложение живое, поэтому, когда оно находится на переднем плане или на заднем плане. После того, как приложение будет убито, также уничтожается экземпляр savedInstanceState
. Вот что у меня есть:Жизненный цикл приложения и Bundle savedInstanceState
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if (savedInstanceState != null) {
Log.i("Dev", "not null");
} else {
Log.i("Dev", "null");
}
}
Вот как я установил его:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("bool", true);
}
Затем я начинаю приложение в эмуляторе. После того, как приложение открыто, нажмите кнопку home
, чтобы открыть Launcher. Затем я убиваю процесс приложения с помощью adb. После этого я запускаю приложение из списка недавно использованного приложения, ожидающего «null» в Logcat, но я действительно вижу «не null», поэтому мое понимание неверное?
documentaion says Если операция была повторно инициализирована после того, как она была закрыта, тогда этот пакет содержит данные, которые он недавно предоставил в onSaveInstanceState (Bundle). – Blackbelt
Итак, я могу полагаться на информацию, которую я там размещаю, по-прежнему доступен после того, как приложение убито? – Eugene
imo неясно. Иногда документация действительно вводит в заблуждение. – Blackbelt