Поведение onCreate и onResume/onRestart в отношении переменных-членов

Когда я открываю активность, я знаю, что могу инициализировать вещи в функции onCreate.

Но как ведут себя функции OnResume и onRestart? Когда вызываются эти функции?

В частности: я инициализирую локальную переменную-член в функции onCreate, создавая ссылку на глобальный объект. Теперь, когда пользователя прерывают, например, звонком, активность можно закрыть. Позже, когда пользователь вернется к моему представлению, каков статус уже инициализированной переменной? Нужно ли мне повторно инициализировать все в функциях onResume/onRestart? Итак, в чем будет функциональное отличие от onCreate?


person Devolus    schedule 17.04.2013    source источник


Ответы (2)


  • onCreate: Активность запущена впервые. Здесь вы можете инициализировать свои вещи.
  • onResume: Пользователь возвращается к действию после того, как другое действие выходит на передний план. (onPause)
  • onRestart: Пользователь переходит к действию после того, как оно больше не отображается (onStop).

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

person ssantos    schedule 17.04.2013
comment
Таким образом, onDestroy означает, что приложение в любом случае будет уничтожено, а onCreate будет вызываться при следующем перезапуске приложения, верно? - person Devolus; 17.04.2013
comment
Не обязательно, onDestroy означает, что Activity уничтожено, например, когда вы возвращаетесь к предыдущему действию с помощью кнопки «Назад», но приложение все еще работает. Но да, как только приложение будет убито (или Activity уничтожено), в следующий раз, когда вы его откроете, onCreate будет вызвано снова. - person ssantos; 17.04.2013
comment
Обратите внимание, что OnResume также будет вызываться сразу после OnCreate, согласно схеме здесь developer.android.com/guide/components/activities/ - person Yoav Feuerstein; 14.06.2017

Предположим, что диалог инициирован из вашей текущей активности, главное окно (Активность) перейдет в состояние onPause. Как только вы заставите активность находиться в фоновом режиме (предположим, вы нажмете кнопку «Домой»), активность перейдет в состояние onPause.

person flexdroid    schedule 17.04.2013