Estou criando um aplicativo de pesquisa de eventos, nós definimos os critérios de pesquisa de uma tela para preencher em outra tela, então o usuário pode editar os critérios de pesquisa da 3ª tela e ir para a 4ª tela.
Para realizar a tarefa acima, estou usando um objeto estático que lembra os valores ao redor do aplicativo e não preciso fazer nada extra.
Mas estou com medo se sobre o ciclo de vida do objeto estático no Android, se houver pouca memória no Android, exclua objetos estáticos ??
Como o Android suporta multitarefa, se o usuário mudar para outro aplicativo e quando o usuário voltar, o aplicativo começa a agir maluco, o objeto estático é removido quando ele multi-tarefa ?? qualquer ideia ?? e também sugerir segurar um objeto estático através do método singleton é a melhor abordagem ???
Bem, o padrão Singleton também se baseia no uso de variáveis estáticas, então, na verdade, você estaria na mesma posição. Embora a abordagem estática possa funcionar na maioria das vezes, pode acontecer que, em alguns casos, quando a memória está cheia e outra atividade assume o primeiro plano antes que seu aplicativo passe para a próxima tela, o processo de sua atividade pode ser encerrado e você perder os valores estáticos. No entanto, o Android oferece algumas opções de persistir valores entre estados ou transmiti-los, como:
Você pode obter alguns exemplos de código do uso de preferências, intenções e banco de dados sqlite olhando para a árvore de código-fonte aegis-shield no google code ou em outros aplicativos Android de código aberto.
fonte
Depois de alguma pesquisa, descobriu-se que usar o aplicativo para armazenar singletons não é uma ideia tão boa, a menos que você esteja pronto para recriá-lo:
Não armazene dados no objeto do aplicativo
portanto, embora a resposta aceita seja tecnicamente correta, ela não fornece todas as informações.
Como o link acima sugere, se você realmente deseja manter esse modelo, você precisa estar pronto para verificar se há nulos e recriar os dados, se possível.
fonte
@ r1k0 está bem aqui. O armazenamento de dados em campos estáticos de uma classe não persistirá por conta própria durante as eliminações e reinicializações do processo do aplicativo. O Android rotineiramente mata processos (aplicativos em execução) quando precisa de memória.
De acordo com o documento Android: estado de atividade e ejeção da memória ,
Você pode salvar e restaurar o estado de primitivos, bem como de objetos serializáveis e parceláveis, usando os métodos abaixo. Eles são chamados automaticamente durante o ciclo de vida normal da atividade.
Portanto, se você tiver uma classe que possui apenas variáveis estáticas, pode salvar o estado de cada campo em onSaveInstanceState () e restaurá-los em onRestoreInstanceState (). Quando o Android interromper o processo em que seu aplicativo está sendo executado, o estado de suas variáveis será salvo e, quando o Android restaurar seu aplicativo, os valores serão restaurados na memória no mesmo estado de antes.
fonte