2016-07-20 4 views
0

Я пытаюсь сохранить и восстановить состояние приложения как savedInstanceState.onRestoreInstanceState не вызывается при нажатии кнопки «Назад»

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putInt(STATE_Tracker, 1); 
    super.onSaveInstanceState(savedInstanceState); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 

    int value = savedInstanceState.getInt(STATE_Tracker); 

    if (value==1){ 

    } 
    else { 

    } 
} 

Этот код работает, когда нажата кнопка дома. Но если я нажму кнопку «Назад» и снова запустил приложение, он не работает.

Любая помощь?

ответ

1

От разработчиков руководства:

Когда ваша деятельность будет уничтожен, поскольку пользователь нажимает назад или деятельность завершается сама, концепция системы этого экземпляра активность исчезает навсегда, потому что поведение указывает на активность больше не нужна , Однако, если система уничтожает активность из-за системных ограничений (а не обычного поведения приложения), то, хотя фактический экземпляр Activity отсутствует, система помнит, что она существовала так, что если пользователь переходит к ней, система создает новый экземпляр действия с использованием набора сохраненных данных, который описывает состояние активности при ее уничтожении. Сохраненные данные, которые система использует для восстановления предыдущего состояния, называются «состоянием экземпляра» и представляют собой набор пар ключ-значение, хранящихся в объекте Bundle.

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

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

И сохраняться состояние в любом варианте хранения как SharedPreference.

Смежные вопросы