Intereting Posts
Как добавить события календаря в Android? Ошибка CreateProcess = 206, имя файла или расширение слишком длинное Чтобы использовать HW-декодер в android через libstagefright, что установить для kKeyAVCC в метаданных для декодирования базовой базы вместо воспроизведения MP4? Расположение диалогового окна на экране Почему не может быть сформирован пример выставления счетов на рынке Google в версии с подписанной версией? Android: View.setClickable потребляет событие click Facebook Войти CallbackManager FacebookCallback не называется? В чем причина «FimgApiStretch: стрейч не удался» в Android Вставить Python в Java на Android Как я могу сделать макет, который будет работать как на планшете, так и на телефоне? Weinre не работает, пытаясь отладить? Фрагмент PopBackStack Org.eclipse.swt.SWTException: «Виджет удален» при попытке открыть AndroidManifest.xml Как ссылаться на стиль в пользовательской теме Получать миллисекунды до полуночи

Как использовать 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 будут повторно инициализированы (как если бы они были созданы), когда пользователь вернется в ваше приложение.