una studio solicitud rendimiento quitar puedo permisos permiso obstaculizando nada mejorar los liberar esta espacio dar como celular borrar app aplicaciones administrador android background global-variables resume

studio - ¿Se pueden restablecer los valores en las variables globales cuando se reanuda una aplicación de Android?



permisos android studio (3)

Cuando una aplicación se ha puesto en segundo plano y luego se reanuda a una actividad, ¿es posible que el recolector de elementos no utilizados haya restablecido las variables de clase estáticas configuradas en otra actividad y el valor establecido en cero?

No sería "restablecido por el recolector de basura". Sin embargo, el proceso puede haber sido cancelado por Android, para liberar memoria para otras aplicaciones.

¿Cuál es la forma recomendada de preservar los valores de las variables globales cuando se coloca una aplicación en segundo plano?

Los miembros de datos estáticos solo deberían ser un caché. Los datos que desea conservar independientemente de lo que suceda (por ejemplo, el proceso que se termina) deben ir a algún almacén persistente, como un archivo plano, SharedPreferences o una base de datos. onPause() es un momento probable para organizar la persistencia de esos datos, ya que, en cualquier momento posterior, su proceso podría finalizar sin previo aviso.

Cuando una aplicación se ha puesto en segundo plano y luego se reanuda a una actividad, ¿es posible que el recolector de elementos no utilizados haya restablecido las variables de clase estáticas configuradas en otra actividad y el valor establecido en cero?

Utilizo un par de variables públicas estáticas públicas en mi Actividad principal y las uso como variables globales en varias otras Actividades. Recibí un informe de bloqueo en la consola de desarrollador de Android Market, donde la única explicación que puedo encontrar es que la aplicación se reanuda en una Actividad que usa el valor de una variable pública estática int en otra clase, pero el valor tiene (¿misteriosamente?) convertirse en cero. Sé que estaba configurado para otra cosa cuando la aplicación comenzó por primera vez. ¿Es esto posible?

Si mi sospecha es correcta, ¿cuál es la forma recomendada de preservar los valores de las variables globales cuando se coloca una aplicación en segundo plano? Guárdelos en SharedPreferences en OnPause () o use onSaveInstanceState o alguna otra cosa?


Puede guardar estos valores en SQLite en el método onDestroy en actividad u otro método con respuesta para salir.


Tenga cuidado con las variables estáticas. Siga el enlace para obtener una explicación sobre Singleton (que también usa una variable estática para mantener el estado): https://.com/a/9004638/1127492