¿Cómo usar onResume ()?

86

¿Alguien puede darme un ejemplo que use onResume()en Android?

Además, si quiero reiniciar la actividad al final de la ejecución de otro, ¿qué método se ejecuta, onCreate()o onResume()?

Y si quiero actualizar los datos, ¿cómo los pongo en onResume()?

Zizou
fuente
Se llama a onResume () cada vez que navega de regreso a la actividad desde una llamada u otra cosa. Puede anular el método onResume de forma similar a onCreate () y realizar la tarea.
Jibяaᴎ Khaᴎ
Esto puede ayudarlo a comprender mejor el ciclo de vida y la aplicación de Android.
TronicZomB
2
La secuencia en la que se llaman estos métodos se explica en la documentación para desarrolladores de Android: developer.android.com/reference/android/app/…
Michael
1
asegúrese de seleccionar una respuesta. bienvenido a SO.
donfede

Respuestas:

129

Cualquier actividad que se reinicia tiene su método onResume () ejecutado primero.

Para usar este método, haga esto:

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

}
Señor arena
fuente
72

Reiniciar la aplicación llamará OnCreate().

Continuar con la aplicación cuando está en pausa llamará OnResume(). De los documentos oficiales en https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle, aquí hay un diagrama del ciclo de vida de la actividad.

el ciclo de vida de la actividad de Android, de https://developer.android.com/images/activity_lifecycle.png en https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

Viswanath Lekshmanan
fuente
1
Utilice el hipervínculo para proporcionar enlaces.
Manoj Fegde
el enlace me está dando problemas a veces. No sé por qué
Viswanath Lekshmanan
2
No recomiendo llamar manualmente a ninguno de los métodos que forman parte del ciclo de vida de la actividad :), que puede causar muchos problemas.
Cata
1
@Cata, asumí que Viswanath significaba que se llamarían los métodos y actualicé la respuesta en consecuencia.
Mathieu K.
28

La mejor manera de entenderlo sería anular todos los métodos de LifeCycle en su actividad y colocar un punto de interrupción (si se registra en el emulador) o un registro en cada uno de ellos. Sabrá a cuál se le llama y cuándo.

Al igual que un spoiler, onCreate()se llama primero, luego, si pausaste la actividad yendo a la pantalla de inicio o iniciando otra actividad, onPause()se llama. Si el sistema operativo destruye la actividad mientras tanto, onDestroy()se llama. Si reanuda la aplicación y la aplicación ya se destruyó, onCreate()se llamará o, de lo contrario onResume(), se llamará.

Editar: me olvidé onStop(), se llama antes onDestroy().

Haga el ejercicio que mencioné y comprenderá mejor.

novato
fuente
1
He estado buscando una explicación tan detallada durante un tiempo, esto realmente me ayudó a crear el ciclo de actividad de la aplicación perfecto. Gracias.
Keno Clayton
olvidaste onStart ()
Dory Daniel
9

La mayoría de las respuestas anteriores hacen un buen trabajo al explicar cómo, por qué y cuándo usar, onResume()pero me gustaría agregar algo sobre la recreación de su archivo Activity.

Quiero saber si quiero reiniciar la actividad al final de la ejecución de otro, qué método se ejecuta onCreate () o onResume ()

La respuesta es onCreate()Sin embargo, cuando decida recrearlo, debe preguntarse cuántas de las Activitynecesidades se deben recrear. Si se trata de datos en un adaptador, digamos por una lista, a continuación, puede llamar notifyDataChanged()a la adapterrepoblar el adaptery no tener que volver a dibujar todo.

Además, si solo necesita actualizar algunos viewspero no todos, entonces puede ser más eficiente llamar invalidate()a los viewque necesitan actualizarse. Esto solo volverá a dibujarlos viewsy posiblemente permitirá que su aplicación se ejecute sin problemas. Espero que esto pueda ayudarte.

codeMagic
fuente
5

onResume()es uno de los métodos llamados a lo largo del ciclo de vida de la actividad . onResume()es la contraparte a la onPause()que se llama cada vez que una actividad se oculta a la vista, por ejemplo, si inicia una nueva actividad que la oculta. onResume()se llama cuando la actividad que estaba oculta vuelve a verse en la pantalla.

Su pregunta sobre qué método se utiliza para reiniciar una actividad. onCreate()se llama cuando se crea la actividad por primera vez. En la práctica, la mayoría de las actividades persisten en segundo plano a través de una serie de llamadas onPause()y onResume(). Una actividad solo se "reinicia" realmente onRestart()si primero se detiene por completo llamando onStop()y luego se vuelve a activar. Por lo tanto, si realmente no detiene las actividades con onStop()él, lo más probable es que lo esté utilizando onResume().

Lea el documento de Android en el enlace anterior para comprender mejor la relación entre los diferentes métodos de estilo de vida. Independientemente del método de ciclo de vida que termine utilizando, el formato general es el mismo. Debe anular el método estándar e incluir su código, es decir, lo que desea que haga la actividad en ese momento, en la sección comentada.

@Override
public void onResume(){
 //will be executed onResume
}
Rarw
fuente
¿Se llama a onResume () cuando hacemos clic en un elemento en la vista?
rajiv_
1
Hacer clic en un elemento no necesariamente llama a onResume. Se llamará al método onResume si esa vista está oculta y restaurada o en la carga inicial antes de que se cree por completo.
Rarw
show error no llamó a super.onResume ()
sirmagid
2

KOTLIN

Cualquier actividad que se reinicia tiene su método onResume () ejecutado primero.

Para usar este método, haga esto:

override fun onResume() {
        super.onResume()
        // your code here
    }
Iker Solozabal Granados
fuente
1

Una vez iniciada una actividad, se reinicia (onRestart () antes de onStart ()), o se pausa (onPause ()), se llama a onResume (). Cuando la actividad está en el estado de onResume (), la actividad está lista para que la utilice el usuario de la aplicación.

He estudiado un poco el ciclo de vida de la actividad, y aquí está mi comprensión de este tema: si desea reiniciar la actividad (A) al final de la ejecución de otra, podría haber algunos casos diferentes.

  1. La otra actividad (B) ha sido pausada y / o detenida o destruida, y la actividad A posiblemente se haya detenido (onPause ()), en este caso, la actividad A llamará a onResume ()

  2. La actividad B ha sido pausada y / o detenida o destruida, la actividad A posiblemente se haya detenido (onStop ()) debido a algo de memoria, en este caso, la actividad A llamará a onRestart () primero, a onStart () en segundo lugar, luego a onResume ()

  3. La actividad B ha sido pausada y / o detenida o destruida, la actividad A ha sido destruida, el programador puede llamar a onStart () manualmente para iniciar la actividad primero, luego a onResume () porque cuando una actividad está en estado destruido, la actividad ha no se inició, y esto sucede antes de que la actividad se elimine por completo. Si se quita la actividad, la actividad debe crearse nuevamente. Llamar manualmente a onStart () Creo que es porque si la actividad no se inicia y se crea, se llamará a onStart () después de onCreate ().

Si desea actualizar datos, cree una función de actualización de datos y coloque la función dentro de onResume (). O coloque una función loadData dentro de onResume ()

Es mejor comprender el ciclo de vida con la ayuda del diagrama de ciclo de vida de la actividad.

Kira Nofans
fuente