Estoy creando una aplicación de búsqueda de eventos, establecemos los criterios de búsqueda desde una pantalla y luego el usuario puede editar los criterios de búsqueda desde la tercera pantalla y pasar a la cuarta pantalla.
Para lograr la tarea anterior, estoy usando un objeto estático que recuerda los valores alrededor de la aplicación y no necesito hacer nada adicional.
Pero me temo que si sobre el ciclo de vida de los objetos estáticos en Android, si se encuentra poca memoria, ¿eliminar los objetos estáticos de Android?
Como Android es compatible con la multitarea, si el usuario cambia a otra aplicación y cuando el usuario vuelve, la aplicación comienza a actuar como un loco, ¿el objeto estático se elimina cuando es multitarea? alguna idea ?? ¿Y también sugiero que sostener un objeto estático a través del método singleton es un mejor enfoque?
Bueno, el patrón Singleton también se basa en el uso de variables estáticas, por lo que en realidad estaría en la misma posición. Si bien el enfoque estático puede funcionar la mayoría de las veces, puede suceder que, en algunos casos, cuando la memoria está llena y otra actividad toma el primer plano antes de que su aplicación se mueva a la siguiente pantalla, el proceso de su actividad podría terminar y perder los valores estáticos. Sin embargo, Android ofrece algunas opciones para mantener valores entre estados o transmitirlos, como:
Puede obtener algunos ejemplos de código del uso de preferencias, intenciones y la base de datos sqlite mirando el árbol de código fuente de aegis-shield en el código de Google o en otras aplicaciones de Android de código abierto.
fuente
Después de investigar un poco, resulta que usar la aplicación para almacenar singleton no es una gran idea, a menos que esté listo para recrearla:
No almacene datos en el objeto de la aplicación
por lo que, si bien la respuesta aceptada es técnicamente correcta, no proporciona toda la información.
Como sugiere el enlace anterior, si realmente desea seguir con ese modelo, debe estar listo para verificar si hay nulos y volver a crear los datos, si es posible.
fuente
@ r1k0 está aquí. El almacenamiento de datos en los campos estáticos de una clase no persistirá por sí solo en los procesos de aplicación mata y reinicia. Android mata de forma rutinaria los procesos (aplicaciones en ejecución) cuando necesita memoria.
Según el documento de Android: estado de actividad y expulsión de la memoria ,
Puede guardar y restaurar el estado de primitivas, así como de objetos serializables y parcelables utilizando los métodos siguientes. Estos se llaman automáticamente durante el ciclo de vida normal de la actividad.
Entonces, si tiene una clase que solo tiene variables estáticas, puede guardar el estado de cada campo en onSaveInstanceState () y restaurarlos en onRestoreInstanceState (). Cuando Android mata el proceso en el que se ejecuta su aplicación, el estado de sus variables se guardará, y cuando Android restaure su aplicación, los valores se restaurarán en la memoria en el mismo estado que antes.
fuente