Як використовувати onResume ()?


86

Хто-небудь може дати мені приклад, який використовує onResume()в Android?

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

І якщо я хочу оновити дані, як їх розмістити onResume()?


onResume () викликається кожного разу, коли ви повертаєтесь до активності із дзвінка або чогось іншого. Ви можете замінити метод onResume подібно до onCreate () і виконати завдання.
Jibяaᴎ Khaᴎ

Це може допомогти вам більше зрозуміти життєвий цикл програми та програми для Android.
TronicZomB

2
Послідовність виклику цих методів пояснюється в документації для розробників Android: developer.android.com/reference/android/app/…
Майкл

1
обов’язково виберіть відповідь. ласкаво просимо до SO.
donfede

Відповіді:


129

Будь-яка діяльність, яка перезапускається, спочатку виконує метод 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 :), що може спричинити багато проблем.
Ката

1
@Cata, я припустив, що Viswanath мав на увазі, що будуть викликані методи, і я відповідно оновив відповідь.
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_

1
Натискання елемента не обов'язково викликає Resume. Метод onResume буде викликаний, якщо цей вигляд або прихований, і відновлений, або при початковому завантаженні, перш ніж він буде повністю створений.
Rarw

показати помилку не викликало до super.onResume ()
sirmagid


2

КОТЛІН

Будь-яка діяльність, яка перезапускається, спочатку виконує метод 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 ()

Краще зрозуміти життєвий цикл за допомогою діаграми життєвого циклу Діяльність.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.