Como posso criar variáveis globais para manter valores permanentes em todo o ciclo de vida do aplicativo, independentemente da atividade em execução.
android
global-variables
d-man
fonte
fonte
Respostas:
Você pode estender a
android.app.Application
classe base e adicionar variáveis de membro da seguinte forma:No manifesto do Android, você deve declarar a classe implementando android.app.Application (adicione o
android:name=".MyApplication"
atributo à tag do aplicativo existente):Em suas atividades, você pode obter e definir a variável da seguinte maneira:
fonte
Você pode usar um
Singleton Pattern
como este:Na sua aplicação, você pode acessar seu singleton desta maneira:
fonte
Essa variável global funciona para o meu projeto:
fonte
Você pode usar as preferências do aplicativo. Eles são acessíveis a partir de qualquer atividade ou parte do código, desde que você transmita o objeto Context, e são privados para o aplicativo que os utiliza, portanto, você não precisa se preocupar em expor valores específicos do aplicativo, a menos que lide com roteados. dispositivos. Mesmo assim, você pode usar esquemas de hash ou criptografia para salvar os valores. Além disso, essas preferências são armazenadas de um aplicativo executado para o próximo. Aqui estão alguns exemplos de código que você pode ver.
fonte
Existem algumas maneiras diferentes de conseguir o que está pedindo.
1.) Estenda a classe de aplicativo e instancie seu controlador e modele objetos lá.
Em seguida, você pode chamar o seu singleton a partir do objeto Application personalizado a qualquer momento:
2.) Você pode fazer com que seu controlador crie apenas uma instância singleton:
Então você pode simplesmente chamar o método create a partir de qualquer Atividade ou Fragmento e ele criará um novo controlador se ainda não existir, caso contrário, ele retornará o controlador preexistente.
3.) Finalmente, existe uma estrutura elegante criada na Square que fornece injeção de dependência no Android. É chamado Dagger . Não vou falar sobre como usá-lo aqui, mas é muito bom se você precisar desse tipo de coisa.
Espero ter dado detalhes suficientes sobre como você pode fazer o que está esperando.
fonte
Tente assim:
Crie uma classe de dados compartilhada:
SharedData.java
Declarou / Inicia uma instância da classe globalmente nas classes em que você deseja definir / obter dados (usando este código antes do
onCreate()
método): -Definir dados:
Obter dados:
fonte
Você pode criar um
Global Class
como este:Em seguida, defina-o no manifesto:
Agora você pode definir valores para a variável global como esta:
Você pode obter esses valores assim:
Por favor, encontre um exemplo completo deste blog Global Variables
fonte
fonte
Procurei respostas semelhantes, mas as que foram fornecidas aqui não atendem às minhas necessidades. Encontro algo que, do meu ponto de vista, é o que você está procurando. O único ponto preto possível é uma questão de segurança (ou talvez não), já que eu não sei sobre segurança.
Sugiro usar Interface (não é necessário usar Class com construtor e assim ...), pois você só precisa criar algo como:
Em seguida, você pode acessar todos os lugares das suas aulas usando o seguinte:
fonte
Tecnicamente, isso não responde à pergunta, mas eu recomendaria usar o banco de dados Room em vez de qualquer variável global. https://developer.android.com/topic/libraries/architecture/room.html Mesmo se você estiver 'apenas' precisando armazenar uma variável global e isso não é grande coisa e não, mas usar o banco de dados da sala é o mais elegante , maneira nativa e bem suportada de manter valores em torno do ciclo de vida da atividade. Isso ajudará a evitar muitos problemas, especialmente a integridade dos dados. Entendo que o banco de dados e a variável global são diferentes, mas use o Room para manter a manutenção do código, a estabilidade do aplicativo e a integridade dos dados.
fonte
Use SharedPreferences para armazenar e recuperar variáveis globais.
fonte
Se possível, você deve declarar as variáveis que precisa manter ativas que não foram limpas pelo Garbage Collector ou Descarregar pelo OS no arquivo .so Para fazer isso, você deve codificar por C / C ++ e compilar no arquivo .so lib e carregue-o na sua MainActivity.
fonte
static
variáveis Java .fonte
Fácil!!!!
As variáveis que você deseja acessar como variável global, podem declará-las como variáveis estáticas. E agora, você pode acessar essas variáveis usando
classname.variablename;
}
MyProperites.someValueIWantToKeep;
É isso aí! ;)
fonte
synchronized
na estática,getInstance()
enquanto outras não. votado de acordo.