Что такое onCreate (Bundle savedInstanceState)

Может ли кто-нибудь помочь мне узнать о Bundle savedInstanceState в onCreate(Bundle savedInstanceState) Я новичок в Android. Я пытаюсь понять это с сайта developer.android.com. Но я не могу понять. Может ли кто-нибудь упростить его?

Ответ 1

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

... вы должен использовать метод onPause() для записи любых постоянных данных (таких как редактирование пользователей). Кроме того, метод onSaveInstanceState (Bundle) вызывается перед тем, как поместить активность в такое фоновое состояние, позволяющее сэкономить любые динамические состояние экземпляра в вашей деятельности в данный Bundle, чтобы позднее полученной в onCreate (Bundle), если деятельность необходимо воссоздать. См. Раздел "Процесс жизненного цикла" для получения дополнительной информации о том, как жизненный цикл процесса привязан к действиям, которые он проводит. Заметка что важно сохранить постоянные данные в onPause() вместо onSaveInstanceState (Bundle), потому что последнее не является частью обратные вызовы жизненного цикла, поэтому не будут вызываться в каждой ситуации, поскольку описанных в его документации.

источник

Ответ 2

onCreate(Bundle savedInstanceState) вы получите нулевое значение Bundle, когда действие начнется с первого раза, и оно вступит в силу, когда изменится ориентация активности........

http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html

Android предоставляет еще один элегантный способ добиться этого. Для этого нам нужно переопределить метод под названием onSaveInstanceState(). Платформа Android позволяет пользователям сохранять состояние любого экземпляра. Состояние экземпляра может быть сохранено в Bundle. Bundle передается как аргумент метода onSaveInstanceState.

мы можем загрузить сохраненное состояние экземпляра из Bundle, переданного как аргумент, в метод onCreate. Мы также можем загрузить сохраненное состояние экземпляра в метод onRestoreInstanceState. Но я оставлю это для читателей, чтобы выяснить.

Ответ 3

Как ответил Дхрув Гайрола, вы можете сохранить состояние приложения, используя Bundle savedInstanceState. Я пытаюсь привести очень простой пример того, что новые ученики, подобные мне, могут легко понять.

Предположим, у вас есть простой фрагмент с TextView и Button. Каждый раз, когда вы нажимаете кнопку, текст меняется. Теперь измените ориентацию своего устройства/эмулятора и обратите внимание, что вы потеряли данные (это означает, что данные изменились после нажатия на вас), а фрагмент начинается с первого раза. Используя Bundle savedInstanceState, мы можем избавиться от этого. Если вы посмотрите на жизненный кайл фрагмента. Fragment Lifecylce, вы получите, что метод "onSaveInstanceState" вызывается, когда фрагмент для уничтожения.

Таким образом, мы можем сохранить состояние, означающее измененное текстовое значение в этот пакет, подобный этому

 int counter  = 0;
 @Override
 public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("value",counter);
 }

После того, как вы сделаете ориентацию, метод onCreate будет называться правильно? поэтому мы можем просто сделать это

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

    if(savedInstanceState == null){
        //it is the first time the fragment is being called
        counter = 0;
    }else{
        //not the first time so we will check SavedInstanceState bundle
        counter = savedInstanceState.getInt("value",0); //here zero is the default value
    }
}

Теперь вы не потеряете свое значение после ориентации. Измененное значение всегда будет отображаться.

Ответ 4

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

Ответ 5

onCreate (Bundle savedInstanceState) получает вызов, а savedInstanceState будет не null, если ваша активность и была прервана в сценарии (визуальный вид), описанном выше. Затем ваше приложение может захватить (уловить) данные из savedInstanceState и восстановить свою активность