Как использовать onSaveInstanceState

Я переопределяю функцию onSaveInstanceState ниже

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

У меня есть вопрос. В чем проблема, если я опускаю **super.onSaveInstanceState(savedInstanceState)** , поэтому функция будет выглядеть так

 @Override public void onSaveInstanceState(Bundle savedInstanceState) { //super.onSaveInstanceState(savedInstanceState); } 

Надеюсь, вы можете объяснить мне, как подробно

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

super.onSaveInstanceState(Bundle); Метод записывает пакет и все, что он содержит в связанном объекте, что активность (фрагмента) может получить доступ к его onCreate(Bundle) . Здесь есть информация.

Но обратите внимание, что этот тип данных сохранения не является постоянным. Если вы удаляете активность для стека, состояние также будет потеряно. Как упоминал @CapDroid, этот метод забрасывается до того, как действие приостановлено.

РЕДАКТИРОВАТЬ Я бы также рекомендовал вам прочитать пункт « Жизненный цикл процесса» в документации «Деятельность».

OnSaveInstanceState (Bundle savedInstanceState) – это вызов, прежде чем ваша деятельность перейдет в режим pause . Мы можем хранить любую информацию в комплекте, чтобы мы могли получить эту информацию из пакета в каком-то случае, например, в виде изменения ориентации.

Ниже приведен простой пример того, как использовать onSaveInstanceState

 @Override public void onSaveInstanceState(Bundle outState) { outState.putString("message", "This is my message to be reloaded"); super.onSaveInstanceState(outState); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if( savedInstanceState != null ) { Toast.makeText(this, savedInstanceState .getString("message"), Toast.LENGTH_LONG).show(); } } 

Примечание. Всегда вызывайте суперкласс, чтобы он мог сохранять состояние иерархии представления.

Если вы не вызываете super.onSaveInstanceState(outState); То метод по умолчанию не будет вызывать. Поэтому вы можете потерять свои данные, когда ваше устройство имеет низкую память, и ваша деятельность будет разрушена. Когда снова он появится в OnCreate ваше все представление будет создано снова ..

Для получения дополнительной информации нажмите здесь

Не onSaveInstanceState к супер-реализации onSaveInstanceState , вы не позволяете Activity (или Fragment) сохранять свое состояние экземпляра.

Это включает в себя любое переходное состояние, которое еще не сохранилось в каком-либо другом хранилище данных.

Например, если у вас есть вид EditText котором пользователь вводит длинный абзац, если пользователь переключается на другое приложение, а затем возвращается к вашему, состояние EditText (текст, введенный пользователем) потенциально может быть потеряно, если ваш Активность восстанавливается системой по причинам памяти (что очень часто происходит в сценариях реального использования).

Другими словами, вызовите super.onSaveInstanceState или у вас будет плохое время.

Когда вы вызываете super.onSaveInstanceState() реализация по умолчанию сохраняет состояние всех ваших View .

Если вы не вызываете super.onSaveInstanceState() то, если ваше приложение убито, когда оно находится в фоновом режиме, ваши View s будут повторно инициализированы (как если бы они были созданы), когда пользователь вернется в ваше приложение.