Android: cuando usar onStart (), onStop ()?
He leído varios posts que describen la diferencia entre onStart()
y onResume()
: onStart()
se llama cuando la actividad se hace visible, onResume()
se llama cuando la actividad está lista para la interacción del usuario. multa.
Siempre he añadido código a onPause()
y onResume()
, y nunca me he molestado con onStart()
y onStop()
.
- La onPause de la actividad y onResume que se llama después de comenzar, para ninguna razón
- OnCreate siendo llamado en la actividad A en la navegación ascendente
- Restauración del estado en Android cuando se utiliza el botón "arriba"
- Permiso de Marshmallow: Componente Lifecycle
- ¿Este patrón de mensajería de Servicio de Actividad causa una pérdida de memoria?
¿Puede alguien dar algunos ejemplos concretos de lo que podría hacer en onStart()
, vs. onResume()
? Lo mismo vale para onStop()
y onPause()
, ¿cómo es onStop()
útil? Debo de faltar algo fundamental aquí.
- Variables estáticas públicas y gestión del ciclo de vida de la actividad de Android
- Omitir correctamente la actividad de inicio de sesión si ya ha iniciado sesión
- Distinguir entre presionar el botón "inicio" y abrir otra Actividad
- Android Lifecycle - ActivityManager mata proceso -> Excepción al volver de fondo
- Mal comportamiento de Backstack de la actividad cuando la actividad destruida
- Mostrar fragmento viewpager dentro de un fragmento
- ¿Qué sucede con la aplicación Android cuando una llamada telefónica interrumpe la aplicación?
- Cómo detener y reanudar un servicio
onStop()
(por ejemplo) se llamará cuando deje la actividad para alguna otra actividad (editar: casi ver comentarios de commonswares acerca de las actividades temáticas de diálogo). Por ejemplo, si utiliza startActivity()
en la actividad A para iniciar la actividad B. Cuando vuelve a pulsar en la actividad B, volverá a la actividad A y se onStart
.
Esto difiere de algunas de las razones onPause
podría ser llamado sin onStop
ser llamado. Si, por ejemplo, la pantalla se agota o se pulsa el botón onPause
se llamará, pero probablemente no onStop
(dependiendo de la memoria disponible y lo que sea), por lo que es una "pausa más clara". OnStop probablemente se llamará eventualmente incluso en este caso, pero no inmediatamente.
Ok, pero cuál es el uso
A menudo no hay un uso específico, pero puede haber. Puesto que sus actividades mantendrán su estado de memoria en la pila incluso después de iniciar otra actividad, esa pila aumentará con el número de actividades iniciadas (altura de la pila). Esto puede llevar a un uso de memoria grande en algunas aplicaciones. Después de un tiempo, el marco entrará en acción y eliminará algunas actividades de la pila, pero esto es bastante brusco y probablemente significará que muchos estados se mantendrán al regresar.
Por lo tanto, un ejemplo de uso para onStart/onStop
es si desea liberar algún estado al dejar una actividad para otra y volver a onStart/onStop
cuando regrese. Lo he utilizado para establecer listadapters a null, cachés de imágenes vacías y similares (en aplicaciones muy específicas). Si desea liberar la memoria utilizada por las vistas visibles en un listadapter puede volver a crearlo en onstart y dejar que las vistas sean recogidas por el gc. Esto aumentará la probabilidad de que el resto del estado de la memoria de la actividad viva.
Algunos recursos se pueden considerar lo suficientemente buenos para guardar mientras la instancia de actividad está activa y algunos sólo cuando está en la parte frontal de la pila. Depende de usted decidir lo que es mejor en su aplicación y la granularidad de crear / iniciar / curriculum vitae le da eso.
OnStart () funciona después de onCreate () finalizó su tarea. Es un buen lugar para poner un broadcastReceiver o inicializar algún estado sobre la interfaz de usuario que debe mostrar constantemente siempre que el usuario vuelve a esta actividad.
OnResume () funciona cuando regresa a su Intención u Actividad pulsando el botón Atrás. Así que onPause se llamará cada vez que una actividad diferente viene a primer plano.
Creo que su pregunta es bastante explicada aquí en el doc: leer sobre el ciclo de vida de la actividad
- Android os.arch salida para ARM, MIPS, x86?
- If (session.isOpen ()), inicio de sesión de facebook en android siempre devuelve false