onStop()
serán llamados (por ejemplo) cuando salga de la actividad por alguna otra actividad (edit:. Casi ver a commonswares comentario sobre actividades temáticas de diálogo). Por ejemplo, si usa startActivity()
en la actividad A para iniciar la actividad B. Cuando vuelve a presionar en la actividad B, volverá a la actividad A y se llamará a onStart
.
Esto difiere de algunas de las razones por las que se pueden llamar sin llamar al onStop
. Si, por ejemplo, se apaga la pantalla o se presiona el botón standy, se llamará al , pero probablemente no al onStop
(dependiendo de la memoria disponible y otras cosas), por lo que es una "pausa más ligera". onStop probablemente sea llamado eventualmente incluso en este caso, pero no de manera inmediata.
Ok, pero ¿cuál es el uso
A menudo no hay ningún uso específico, pero no pudo ser. Dado que sus actividades mantendrán su estado de memoria en la pila incluso después de comenzar otra actividad, esa pila aumentará con la cantidad de actividades iniciadas (altura de la pila). Esto puede generar un gran uso de memoria en algunas aplicaciones. Después de un tiempo, el marco entrará en acción y eliminará algunas actividades en la pila, pero esto es bastante directo y probablemente significará que se retendrán muchos estados al regresar.
Por lo tanto, un uso de ejemplo para onStart/onStop
es si desea liberar algún estado al dejar una actividad para otra y volver a crearla cuando regrese. Lo he usado para establecer los adaptadores de lista en nulas, 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 adaptador de lista, puede volver a crearlo en onstart y permitir que el gc recoja las vistas. Esto aumentará la probabilidad de que el resto del estado de memoria de la actividad viva.
Algunos recursos se pueden considerar lo suficientemente buenos como para guardarlos mientras la instancia de actividad está activa y otros solo cuando están en la parte frontal de la pila. Depende de usted decidir qué es lo mejor en su aplicación y la granularidad de crear/iniciar/reanudar le da eso.
"se llamará a onStop() cuando abandones la actividad por alguna otra actividad"; en realidad, se invocará cuando tu actividad ya no esté visible. Si una actividad con tema de diálogo aparece en primer plano, no se llama a 'onStop() '. – CommonsWare
Buen punto. La actividad de llamada aún podría estar visible en segundo plano en ese ejemplo (y las cosas de reciclaje serían malas). Estaba mostrando un ejemplo de dónde sucede y cómo lo he usado para reducir el uso de memoria, pero esta es una buena excepción. Como regla general, sigue siendo bueno. Todavía tengo que ver montones de actividades de diálogo llamándose entre sí. –
Oh, sin duda, las actividades con temas de diálogo son inusuales. – CommonsWare