Может ли кто-нибудь помочь мне узнать о Bundle savedInstanceState
в onCreate(Bundle savedInstanceState)
Я новичок в Android. Я пытаюсь понять это с сайта developer.android.com. Но я не могу понять. Может ли кто-нибудь упростить его?Что нарисовано (Bundle savedInstanceState)
ответ
Если вы сохраняете состояние приложения в пакете (как правило, не постоянными, динамическими данными в onSaveInstanceState
), его можно вернуть обратно в onCreate
, если необходимо активировать действие (например, изменение ориентации), чтобы вы не теряйте эту предварительную информацию. Если данных не было, savedInstanceState
имеет значение NULL.
... вы следует использовать метод OnPause() для записи каких-либо постоянных данных (такие как редактирует пользователей) для хранения. Кроме того, вызывается метод onSaveInstanceState (Bundle) перед размещением активности в таким фоновым состоянием, что позволяет сэкономить любое динамическое состояние экземпляра в вашей деятельности в данный комплект, который будет позже , полученный в onCreate (Bundle), если деятельность необходимо воссоздать. См. Раздел «Процесс жизненного цикла» для получения дополнительной информации о том, как жизненный цикл процесса связан с действиями, которые он проводит. Примечание , что важно сохранить постоянные данные в onPause() вместо onSaveInstanceState (Bundle), потому что последний не является частью обратных вызовов жизненного цикла , поэтому не будет вызываться в каждой ситуации, как , описанной в его документации.
ли другие действия имеют один и тот же пакет?, Если я начну другую деятельность, передаст ли он пакет из первого? –
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
. Но я оставлю это для читателей, чтобы понять.
'savedInstanceState' будет нечеловеческим, если ранее был вызван' onSavedInstanceState() '. изменения ориентации - только один пример, в котором это может произойти. –
@AlexLockwood, я пытаюсь думать обо всех ситуациях, когда это может произойти. Есть ли какая-либо документация? Один экземпляр, о котором я могу думать, это то, что пользователь переключает приложения и возвращается, но действие было уничтожено для восстановления ресурсов. В этом случае андроид будет воссоздавать активность с помощью пакета, если onSaveInsanceState() был переопределен, правильно? – batbrat
@batbrat Да ... комментарий, который я сделал (почти два года назад), не совсем корректен. Я думаю, что лучший способ поставить аргумент 'Bundle' в' onCreate (Bundle) 'будет не -null, тогда и только тогда, когда' Activity' имел ранее обработанный метод 'onSaveInstanceState'. Это происходит во время изменений ориентации ... и также происходит, когда активность возвращается после того, как ее убила ОС, и когда вы вызываете любое другое изменение конфигурации на вашем устройстве. –
onCreate(Bundle)
вызывается, когда активность запускается впервые. Вы можете использовать его для выполнения одноразовой инициализации, например создания пользовательского интерфейса. onCreate()
принимает один параметр, который является либо нулевым, либо некоторой информацией о состоянии, ранее сохраненной onSaveInstanceState
.
onCreate (Bundle savedInstanceState) вызывается и сохраняетсяInstanceState будет не нулевым, если ваша активность и была завершена в сценарии (визуальный вид), описанном выше. Затем ваше приложение может захватить (уловить) данные из сохраненногоInstanceState и восстановить свою активность
Как ответил Дхрув Гайрола, вы можете сохранить состояние приложения, используя 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
}
}
Теперь вы не потеряете свою ценность после ориентации. Измененное значение всегда будет отображаться.
Обратите внимание, что это также относится к действию. Можете ли вы подробнее объяснить разницу (Bundle of Activity) и Bundle of Fragment? – laalaguer
Вы можете получить четкое представление о жизненных циклах активности и фрагментах, в которых активность может отображать сразу несколько фрагментов. Таким образом, основное отличие состоит в том, что вы можете сохранить некоторые значения для всех фрагментов активности, тогда u будет использовать пучок активности, иначе u должен использовать пакет фрагмента, если он предназначен для определенного фрагмента. – Asad
OnCreate (Bundle savedInstanceState) Функция в Android:
1) Когда активность первого вызова или запущен затем OnCreate (Bundle savedInstanceState) метод отвечает создать свою деятельность.
2) Когда изменяется ориентация (то есть от горизонтальной к вертикальной или вертикальной по горизонтали), или когда действие принудительно завершается какой-либо операционной системой, тогда savedInstanceState, то есть объект класса Bundle, сохранит состояние Activity.
3) После того, как ориентация изменилась, onCreate (Bundle savedInstanceState) вызовет и заново создаст активность и загрузит все данные из сохраненногоInstanceState.
4) В основном класс Bundle используется для хранения данных о деятельности при возникновении вышеприведенного условия в приложении.
5) onCreate() не требуется для приложений. Но причина, по которой он используется в приложении, заключается в том, что этот метод является лучшим местом для ввода кода инициализации.
6) Вы также можете поместить свой код инициализации в onStart() или onResume(), и когда приложение загрузится первым, оно будет работать так же, как и в onCreate().
- 1. android onCreate (Bundle savedInstanceState)
- 2. Altering Bundle savedInstanceState
- 3. Bundle savedInstanceState всегда null
- 4. Android onRestoreInstanceState (Bundle savedInstanceState)
- 5. set savedInstanceState Bundle в действии
- 6. savedInstanceState bundle содержит неизвестный ключ
- 7. «onCreate (Bundle savedInstanceState)» уже определен
- 8. Что такое «savedInstanceState»?
- 9. onCreate (Bundle savedInstanceState) второй активности не загружен?
- 10. Выполнение doInBackground (AsyncTask) - onCreate (Bundle savedInstanceState)
- 11. Жизненный цикл приложения и Bundle savedInstanceState
- 12. Где объект Bundle, созданный в onCreate (Bundle savedInstanceState)
- 13. FragmentActivity NullPointer in onCreate savedInstanceState Bundle
- 14. onCreate (Bundle savedInstanceState) всегда всегда null
- 15. Что (savedInstanceState) означают
- 16. onCreate (savedInstanceState) savedInstanceState is NULL
- 17. Bundle savedInstanceState всегда null in onCreateView(), несмотря на вызов onSaveInstance()
- 18. Разница между «savedInstanceState» и «bundle» в Android с Xamarin?
- 19. Использование onCreate Bundle savedInstanceState с поддержкой обоев? (Watchface)
- 20. Fetching savedInstanceState значения, NullPointerException
- 21. Сделайте то, что уже нарисовано прозрачным?
- 22. savedInstanceState всегда нуль фрагментарно
- 23. Fragment savedInstanceState не работает
- 24. SavedInstanceState is null
- 25. savedInstanceState не восстанавливается
- 26. последствия памяти savedInstanceState
- 27. Коррумпированный Android savedInstanceState
- 28. savedInstanceState vs getIntent(). GetExtras()
- 29. Android savedInstanceState вернуться всегда нуль
- 30. ландшафтный режим savedInstanceState
Это хорошее видео: https://www.youtube.com/watch?v=kkYIMZw9gzQ –