Necesito mi aplicación de Android para guardar su estado en el disco cuando su actividad se pone en segundo plano o muere. Se ha sugerido que inicie un hilo cuando se llame a OnPause() y realice algún procedimiento costoso de E/S allí (vea Saving/loading document state quickly and robustly for image editor).¿Cómo maneja Android los hilos de fondo cuando sale de una actividad?
¿En qué situaciones el sistema operativo matará al hilo y con qué frecuencia ocurren estas situaciones?
Supongo que será como la forma en que se manejan las actividades donde el sistema operativo puede arbitrariamente decidir eliminar el hilo, pero principalmente solo lo hará cuando los recursos sean extremadamente limitados. Sin embargo, sería bueno encontrar documentación específica de esto.
Al jugar, con algunos códigos de prueba, un hilo de fondo iniciado en onPause() se ejecutará indefinidamente en segundo plano en mi dispositivo (traté de cargar muchas aplicaciones y no pude lograr que se matara).
Para mi aplicación específica, estoy escribiendo un editor de mapas de bits en el que estoy usando el patrón Command y el patrón Memento para permitir deshacer y rehacer las ediciones. Me gustaría que el usuario pueda deshacer/rehacer sus ediciones, por ejemplo, el usuario recibe una llamada telefónica y la actividad se cancela cuando se pone en segundo plano. La mejor solución que se me ocurre es usar un hilo de fondo para guardar constantemente mis comandos y recuerdos en el disco durante el uso de la aplicación y para terminar de guardar los objetos que quedan en una hebra de fondo si se invoca a OnPause. En el peor de los casos, si el hilo se mata, solo perderé algunas ediciones.
Solo para aclarar, si crea un hilo en el proceso que se adjunta a alguna actividad, este hilo se eliminará cuando se mate la actividad (es decir, el proceso y el hilo están vinculados)? – memcom
@tifftuff: una actividad no es una aplicación. Una actividad es un componente de una aplicación. Una aplicación puede tener muchos componentes, incluidas actividades múltiples, servicios, etc. Cuando se destruye el último componente de una aplicación (por ejemplo, el usuario presiona ATRÁS desde la actividad única en una aplicación pequeña), el proceso se destina al reciclaje. o terminación. NO FUGAS HILOS. Si inicia el hilo, debe hacer los arreglos para que finalice, ya que Android no lo rescindirá por usted, a menos que finalice el proceso, lo que puede no ocurrir en algunas semanas. – CommonsWare
Gracias. ¿Tiene alguna recomendación sobre si un Servicio sería más apropiado para usar que un hilo para este trabajo en segundo plano? – memcom