¿Cómo puedo crear variables globales para mantener los valores alrededor del ciclo de vida de la aplicación, independientemente de la actividad que se esté ejecutando?
android
global-variables
d-man
fuente
fuente
Respuestas:
Puede extender la
android.app.Application
clase base y agregar variables miembro de la siguiente manera:En su manifiesto de Android, debe declarar la clase que implementa android.app.Application (agregue el
android:name=".MyApplication"
atributo a la etiqueta de aplicación existente):Luego, en sus actividades, puede obtener y establecer la variable de la siguiente manera:
fuente
Puedes usar un
Singleton Pattern
como este:En su aplicación puede acceder a su singleton de esta manera:
fuente
Esta variable global funciona para mi proyecto:
fuente
Podrías usar las preferencias de la aplicación. Son accesibles desde cualquier actividad o fragmento de código siempre que pase el objeto Context, y son privados para la aplicación que los utiliza, por lo que no debe preocuparse por exponer los valores específicos de la aplicación, a menos que trate con enrutado dispositivos. Aun así, puede usar esquemas de cifrado o hash para guardar los valores. Además, estas preferencias se almacenan desde una aplicación ejecutada hasta la siguiente. Aquí hay algunos ejemplos de código que puede ver.
fuente
Hay algunas maneras diferentes en que puede lograr lo que está pidiendo.
1.) Extienda la clase de aplicación e instancia su controlador y objetos de modelo allí.
Luego puede llamar a su singleton desde su objeto de Aplicación personalizada en cualquier momento:
2.) Puede hacer que su controlador simplemente cree una instancia singleton de sí mismo:
Luego puede llamar al método de creación desde cualquier Actividad o Fragmento y creará un nuevo controlador si aún no existe, de lo contrario devolverá el controlador preexistente.
3.) Finalmente, hay un marco elegante creado en Square que le proporciona inyección de dependencia dentro de Android. Se llama Daga . No explicaré cómo usarlo aquí, pero es muy hábil si necesitas ese tipo de cosas.
Espero haber dado suficientes detalles sobre cómo puedes hacer lo que esperas.
fuente
Intenta así:
Crear una clase de datos compartidos:
SharedData.java
Declarado / Iniciado una instancia de clase globalmente en aquellas clases donde desea establecer / obtener datos (utilizando este código antes del
onCreate()
método): -Establecer datos:
Obtener datos:
fuente
Puede crear un
Global Class
como este:Luego defínalo en el manifiesto:
Ahora puede establecer valores en una variable global como esta:
Puede obtener esos valores como este:
Encuentre el ejemplo completo de este blog Variables globales
fuente
fuente
Verifiqué una respuesta similar, pero las que figuran aquí no se ajustan a mis necesidades. Encuentro algo que, desde mi punto de vista, es lo que estás buscando. El único punto negro posible es un asunto de seguridad (o tal vez no) ya que no sé sobre seguridad.
Sugiero usar Interface (no es necesario usar Class con constructor y así ...), ya que solo tiene que crear algo como:
Luego puede acceder a todas partes dentro de sus clases utilizando lo siguiente:
fuente
Técnicamente, esto no responde la pregunta, pero recomendaría usar la base de datos Room en lugar de cualquier variable global. https://developer.android.com/topic/libraries/architecture/room.html Incluso si 'solo' necesita almacenar una variable global y no es gran cosa y qué no, pero usar la base de datos de Room es lo más elegante , forma nativa y bien apoyada de mantener valores en torno al ciclo de vida de la actividad. Ayudará a prevenir muchos problemas, especialmente la integridad de los datos. Entiendo que la base de datos y la variable global son diferentes, pero use Room para mantener el código, la estabilidad de la aplicación y la integridad de los datos.
fuente
Use SharedPreferences para almacenar y recuperar variables globales.
fuente
Si es posible, debe declarar las variables que necesita para mantener vivas que Garbage Collector no haya borrado o Descargar mediante OS en el archivo .so Para hacerlo, debe codificar por C / C ++ y compilar en el archivo .so lib y cárguelo en su actividad principal.
fuente
static
variables de Java .fuente
¡¡¡¡Fácil!!!!
A las variables a las que desea acceder como variable global, puede declararlas como variables estáticas. Y ahora, puede acceder a esas variables utilizando
classname.variablename;
}
MyProperites.someValueIWantToKeep;
¡Eso es! ;)
fuente
synchronized
en la estática,getInstance()
mientras que otros no. votado en consecuencia.