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


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

6 105

6 ответов:

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

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

источник

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

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

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

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

Как ответил Dhruv Gairola, вы можете сохранить состояние приложения с помощью Bundle savedInstanceState. Я пытаюсь привести очень простой пример, который новые ученики, такие как я, могут легко понять.

Предположим, у вас есть простой фрагмент с TextView и кнопки. Каждый раз, когда вы нажимаете на кнопку, текст меняется. Теперь измените ориентацию вашего устройства / эмулятора и обратите внимание, что вы потеряли данные (означает, что измененные данные после нажатия вы получили) и фрагмент начинается как первый раз. С помощью Bundle savedInstanceState мы можем избавиться от этого. Если вы посмотрите на жизненный стиль фрагмента.Фрагмент 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
    }
}

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

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

функция onCreate (Bundle savedInstanceState) в Android:

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

2)Когда когда-либо ориентация (т. е. от горизонтальной к вертикальной или от вертикальной к горизонтальной) активности изменяется или когда активность принудительно прекращается любой операционной системой, то savedInstanceState т. е. объект класса Bundle сохранит состояние деятельности.

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

4) в основном класс Bundle используется для хранения данных активности всякий раз, когда выше условие происходит в приложении.

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

6) вы также можете поместить свой код инициализации в onStart () или onResume (), и когда приложение загрузится первым, оно будет работать так же, как и в onCreate ().

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