Come usare onResume ()?


86

Qualcuno può darmi un esempio che utilizza onResume()in Android?

Inoltre, se voglio riavviare l'attività alla fine dell'esecuzione di un altro, quale metodo viene eseguito onCreate()o onResume()?

E se voglio aggiornare i dati, come li inserisco onResume()?


onResume () viene chiamato ogni volta che torni all'attività da una chiamata o qualcos'altro. È possibile sovrascrivere il metodo onResume in modo simile a onCreate () ed eseguire l'attività.
Jibяaᴎ Khaᴎ

Questo può aiutarti a comprendere meglio il ciclo di vita e l'app Android.
TronicZomB

2
La sequenza in cui vengono chiamati questi metodi è spiegata nella documentazione per sviluppatori Android: developer.android.com/reference/android/app/…
Michael

1
assicurati di selezionare una risposta. benvenuto in SO.
donfede

Risposte:


131

Qualsiasi attività che si riavvia ha il suo metodo onResume () eseguito per primo.

Per utilizzare questo metodo, procedi come segue:

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

}

72

Il riavvio dell'app chiamerà OnCreate().

Continuando l'app quando è in pausa chiamerà OnResume(). Dai documenti ufficiali su https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle ecco un diagramma del ciclo di vita dell'attività.

il ciclo di vita dell'attività Android, da https://developer.android.com/images/activity_lifecycle.png su https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle


1
Utilizzare il collegamento ipertestuale per fornire collegamenti.
Manoj Fegde

il collegamento mi sta dando problemi a volte. Non so perché
Viswanath Lekshmanan

2
Non consiglio di chiamare manualmente nessuno dei metodi che fanno parte del ciclo di vita dell'attività :), ciò può causare molti problemi.
Cata

1
@Cata, presumo che Viswanath intendesse che i metodi verranno chiamati e ho aggiornato la risposta di conseguenza.
Mathieu K.

Volevo sottolineare che onResume è chiamato prima di onCreate al giorno d'oggi!
mdre

28

Il modo migliore per capire sarebbe avere tutti i metodi del ciclo di vita sovrascritti nella tua attività e inserire un punto di interruzione (se si effettua il check in dell'emulatore) o un registro in ciascuno di essi. Saprai quale viene chiamato quando.

Proprio come uno spoiler, onCreate()viene chiamato per primo, quindi se hai messo in pausa l'attività andando alla schermata principale o avviando un'altra attività, onPause()viene chiamato. Se nel frattempo il sistema operativo distrugge l'attività, onDestroy()viene chiamato. Se riprendi l'app e l'app è già stata distrutta, onCreate()verrà chiamato o altrimenti onResume()verrà chiamato.

Modifica: me ne sono dimenticato onStop(), viene chiamato prima onDestroy().

Fai l'esercizio che ho menzionato e avrai una migliore comprensione.


1
Ho cercato una spiegazione così dettagliata per un po ', questo mi ha davvero aiutato a creare il ciclo di attività dell'app perfetto. Grazie.
Keno Clayton

hai dimenticato suStart ()
Dory Daniel

9

La maggior parte delle risposte precedenti fa un buon lavoro spiegando come, perché e quando usare, onResume()ma vorrei aggiungere qualcosa sulla ricreazione del tuo Activity.

Voglio sapere se voglio riavviare l'attività alla fine dell'esecuzione di un altro quale metodo viene eseguito onCreate () o onResume ()

La risposta è onCreate()Tuttavia, quando decidi di ricrearlo effettivamente, dovresti chiederti quanta parte dei Activitybisogni deve essere ricreata. Se si tratta di dati in un adattatore, ad esempio per un elenco, puoi chiamare notifyDataChanged()il adapterper ripopolare il adaptere non dover ridisegnare tutto.

Inoltre, se hai solo bisogno di aggiornare alcuni viewsma non tutti, potrebbe essere più efficiente chiamare invalidate()il view/ i che necessita di aggiornamento. Questo ridisegnerà solo quelli viewse possibilmente permetterà alla tua applicazione di funzionare più agevolmente. Spero che questo possa aiutarti.


5

onResume()è uno dei metodi chiamati durante il ciclo di vita dell'attività . onResume()è la controparte a onPause()cui viene chiamata ogni volta che un'attività è nascosta alla vista, ad esempio se inizi una nuova attività che la nasconde. onResume()viene richiamato quando l'attività che era nascosta torna a essere visualizzata sullo schermo.

La tua domanda ti chiede quale metodo viene utilizzato per riavviare un'attività. onCreate()viene chiamato quando l'attività viene creata per la prima volta. In pratica, la maggior parte delle attività rimane in background attraverso una serie di onPause()e onResume()chiamate. Un'attività viene realmente "riavviata" solo onRestart()se viene prima completamente interrotta chiamando onStop()e poi riportata in vita. Quindi, se non stai effettivamente interrompendo le attività con onStop()esso, è molto probabile che utilizzerai onResume().

Leggi il documento Android nel link sopra per ottenere una migliore comprensione della relazione tra i diversi metodi di stile di vita. Indipendentemente da quale metodo del ciclo di vita si finisce per utilizzare il formato generale è lo stesso. Devi sovrascrivere il metodo standard e includere il tuo codice, cioè cosa vuoi che l'attività faccia a quel punto, nella sezione commentata.

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

OnResume () viene chiamato quando si fa clic su un elemento nella vista?
rajiv_

1
Fare clic su un elemento non chiama necessariamente onResume. Il metodo onResume verrà chiamato se quella vista è nascosta e ripristinata o al caricamento iniziale prima che sia completamente creata.
Rarw

show error non ha chiamato tramite super.onResume ()
sirmagid


2

KOTLIN

Qualsiasi attività che si riavvia ha il suo metodo onResume () eseguito per primo.

Per utilizzare questo metodo, procedi come segue:

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

1

Dopo che un'attività è iniziata, riavviata (onRestart () avviene prima di onStart ()) o sospesa (onPause ()), onResume () viene chiamata. Quando l'attività è nello stato di onResume (), l'attività è pronta per essere utilizzata dall'utente dell'app.

Ho studiato un po 'il ciclo di vita dell'attività ed ecco la mia comprensione di questo argomento: se vuoi riavviare l'attività (A) alla fine dell'esecuzione di un'altra, potrebbero esserci alcuni casi diversi.

  1. L'altra attività (B) è stata messa in pausa e / o interrotta o distrutta e l'attività A potrebbe essere stata sospesa (onPause ()), in questo caso, l'attività A chiamerà onResume ()

  2. L'attività B è stata messa in pausa e / o interrotta o distrutta, l'attività A potrebbe essere stata interrotta (onStop ()) a causa della memoria, in questo caso, l'attività A chiamerà prima onRestart (), poi onStart (), poi onResume ()

  3. L'attività B è stata messa in pausa e / o interrotta o distrutta, l'attività A è stata distrutta, il programmatore può chiamare manualmente onStart () per avviare prima l'attività, quindi onResume () perché quando un'attività è nello stato distrutto l'attività ha non avviato e ciò accade prima che l'attività venga completamente rimossa. Se l'attività viene rimossa, l'attività deve essere creata di nuovo. Chiamando manualmente onStart () penso sia perché se l'attività non è iniziata e viene creata, onStart () verrà chiamato dopo onCreate ().

Se vuoi aggiornare i dati, crea una funzione di aggiornamento dei dati e inserisci la funzione all'interno di onResume (). Oppure inserisci una funzione loadData all'interno di onResume ()

È meglio comprendere il ciclo di vita con l'aiuto del diagramma del ciclo di vita delle attività.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.