Как использовать onResume ()?


86

Может ли кто-нибудь привести мне пример, который используется onResume()в Android?

Кроме того, если я хочу перезапустить действие в конце выполнения другого, какой метод выполняется - onCreate()или onResume()?

И если я хочу обновить данные, как мне их вставить onResume()?


onResume () вызывается всякий раз, когда вы возвращаетесь к действию из вызова или чего-то еще. Вы можете переопределить метод onResume так же, как onCreate (), и выполнить задачу.
Jibяaᴎ Khaᴎ

Это может помочь вам лучше понять жизненный цикл Android-приложения.
TronicZomB

2
Последовательность, в которой вызываются эти методы, объясняется в документации разработчика
Майкл,

1
обязательно выберите ответ. добро пожаловать в SO.
donfede

Ответы:


130

Для любого перезапускаемого Activity сначала выполняется метод onResume () .

Чтобы использовать этот метод, сделайте следующее:

@Override
public void onResume(){
    super.onResume();
    // put your code here...

}

72

При перезапуске приложение вызовет OnCreate().

Продолжение работы приложения, когда оно приостановлено, вызовет звонок OnResume(). Из официальных документов по адресу https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle вот диаграмма жизненного цикла активности.

жизненный цикл активности Android из https://developer.android.com/images/activity_lifecycle.png на https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle.


1
Используйте гиперссылку для предоставления ссылок.
Manoj Fegde

ссылка иногда вызывает у меня проблемы. Я не знаю почему
Вишванат Лекшманан

2
Я не рекомендую вручную вызывать какие-либо методы, которые являются частью жизненного цикла Activity :), это может вызвать множество проблем.
Cata

1
@Cata, я предположил, что Вишванат имел в виду, что методы будут вызваны, и соответственно обновил ответ.
Mathieu K.

28

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

Так же, как спойлер, onCreate()сначала вызывается, затем, если вы приостановили действие, перейдя на главный экран или запустив другое действие, onPause()вызывается. Если ОС тем временем уничтожает активность, onDestroy()вызывается. Если вы возобновите работу приложения, а приложение уже было уничтожено, оно onCreate()будет вызвано или же onResume()будет вызвано.

Изменить: я забыл об этом onStop(), его вызывают раньше onDestroy().

Выполните упомянутое мной упражнение, и вы лучше поймете.


1
Я давно искал такое подробное объяснение, оно действительно помогло мне создать идеальный цикл активности приложения. Спасибо.
Кено Клейтон

вы забыли onStart ()
Дори Дэниел

9

Большинство предыдущих ответов хорошо объясняют, как, почему и когда использовать, onResume()но я хотел бы добавить кое-что о воссоздании вашего Activity.

Я хочу знать, хочу ли я перезапустить действие в конце выполнения другого, какой метод выполняется onCreate () или onResume ()

Ответ: onCreate()однако, принимая решение фактически воссоздать его, вы должны спросить себя, сколько из этого Activityнужно воссоздать. Если данные в адаптер, скажем , для списка, то вы можете позвонить notifyDataChanged()на , adapterчтобы заселить adapterи не придется перерисовывать все.

Кроме того , если вам просто нужно обновить определенное , viewsно не все , то это может быть более эффективным , чтобы позвонить invalidate()на view(с) , что необходимо обновить. Это только перерисовывает их viewsи, возможно, позволит вашему приложению работать более плавно. Я надеюсь это тебе поможет.


5

onResume()- один из методов, вызываемых на протяжении жизненного цикла активности . onResume()является аналогом, onPause()который вызывается каждый раз, когда действие скрыто от просмотра, например, если вы запускаете новое действие, которое его скрывает. onResume()вызывается, когда действие, которое было скрыто, возвращается для просмотра на экране.

Вы спрашиваете, какой метод используется для перезапуска действия. onCreate()вызывается при первом создании действия. На практике большинство мероприятий сохраняются в фоновом режиме через ряд onPause()и onResume()вызовы. Действие действительно «перезапускается» только в том onRestart()случае, если оно сначала полностью остановлено вызовом, onStop()а затем возвращается к жизни. Таким образом, если вы на самом деле не прекращаете деятельность с onStop()ним, скорее всего, вы будете использовать onResume().

Прочтите документ по Android по указанной выше ссылке, чтобы лучше понять взаимосвязь между различными методами образа жизни. Независимо от того, какой метод жизненного цикла вы в конечном итоге используете, общий формат одинаков. Вы должны переопределить стандартный метод и включить свой код, то есть то, что вы хотите, чтобы действие выполнялось в этот момент, в закомментированный раздел.

@Override
public void onResume(){
 //will be executed onResume
}

Вызывается ли onResume (), когда мы щелкаем элемент в представлении?
rajiv_ 02

1
Щелчок по элементу не обязательно вызывает onResume. Метод onResume будет вызываться, если это представление либо скрыто и восстановлено, либо при начальной загрузке до его полного создания.
Rarw 07

show error не вызывается на super.onResume ()
sirmagid 01


2

КОТЛИН

Для любого перезапускаемого Activity сначала выполняется метод onResume ().

Чтобы использовать этот метод, сделайте следующее:

override fun onResume() {
        super.onResume()
        // your code here
    }

1

После запуска действия выполняется его перезапуск (onRestart () до onStart ()) или пауза (onPause ()), вызывается onResume (). Когда действие находится в состоянии onResume (), оно готово к использованию пользователем приложения.

Я немного изучил жизненный цикл действия, и вот мое понимание этой темы: если вы хотите перезапустить действие (A) в конце выполнения другого, может быть несколько разных случаев.

  1. Другое действие (B) было приостановлено и / или остановлено или уничтожено, и действие A, возможно, было приостановлено (onPause ()), в этом случае действие A вызовет onResume ()

  2. Действие B было приостановлено и / или остановлено или уничтожено, действие A, возможно, было остановлено (onStop ()) из-за памяти, в этом случае действие A сначала вызовет onRestart (), затем onStart (), затем onResume ()

  3. Действие B было приостановлено и / или остановлено или уничтожено, действие A было уничтожено, программист может вызвать onStart () вручную, чтобы сначала запустить действие, затем onResume (), потому что, когда действие находится в состоянии уничтожения, действие имеет не запускается, и это происходит до того, как действие будет полностью удалено. Если действие удалено, действие необходимо создать заново. Вызов onStart () вручную, я думаю, потому, что если действие не запущено и оно создано, onStart () будет вызываться после onCreate ().

Если вы хотите обновить данные, создайте функцию обновления данных и поместите функцию внутри onResume (). Или поместите функцию loadData внутри onResume ()

Жизненный цикл лучше понять с помощью диаграммы жизненного цикла Activity.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.