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

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

6 ответов


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

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

источник


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

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

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

мы можем загрузить сохраненное состояние экземпляра из пакета, переданного в качестве аргумента 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 и регенерируют вашу активность