Pergunta

Qual a melhor forma de salvar os dados armazenados na Application Class (singleton) de um aplicativo Android?

Eu tenho um grande aplicativo silencioso que compartilha muitos dados entre as atividades.Portanto, a maior parte é armazenada no Application Singleton.

Tudo funciona muito bem..util, o aplicativo é eliminado pelo sistema operacional com pouca memória ...então quando volta tenta retomar a atividade sem sucesso por falta de dados necessários que estavam antes na Aplicação.

Devido à falta de um método muito apreciado (e necessário) para salvar dados no Aplicativo de acordo com sua experiência, quais são as melhores abordagens?

Posso salvar coisas, além de strings "normais", booleanos, etc., como Bitmaps?

eu já vi isso Como declarar variáveis ​​globais no Android? mas a questão não está focada no que é importante neste caso, como salvar os dados quando o aplicativo é encerrado devido à falta de memória ...

Foi útil?

Solução

Tal como acontece com muitas perguntas, não há uma resposta simples.Existem muitas maneiras de salvar dados e cada uma tem vantagens e desvantagens. A "melhor" abordagem dependerá de suas necessidades específicas.Você tem todas as suas opções aqui: http://developer.android.com/guide/topics/data/data-storage.html

Preferências Compartilhadas armazena strings, então qualquer coisa que seja uma string pode ser armazenada, incluindo qualquer objeto serializado/codificado.De acordo com esta postagem, não há limite de tamanho codificado para uma cadeia de caracteres serializada em SharedPreferences, mas é baseado no limite de tamanho da cadeia de caracteres.No entanto, esta outra postagem ressalta que todo o objeto SharedPreferences é escrito como um único arquivo xml, portanto, você deve tentar manter seu tamanho no mínimo.

Objeto JSON (ou usar GSON como sugerido por katit) são uma boa opção leve, mas a abordagem que eu adotaria é salvá-los no armazenamento interno de dados (a menos que os dados sejam realmente grandes, ou seja, muitos megabytes, e você prefira o armazenamento externo) e mantenha os links apenas nas SharedPreferences.Não sei como são seus objetos, mas se eles puderem ser reduzidos a vários componentes mais simples, você poderá considerar um banco de dados para eles (ou seja, uma linha por objeto, uma coluna por campo, incluindo talvez alguns blobs) .

O arquivos vs banco de dados abordagem dependeria também de quantas vezes você planeja acessar esses objetos.Se eles forem lidos apenas uma ou duas vezes e depois desaparecerem, eu escolheria os arquivos em vez do incômodo do banco de dados e de seus cursores.Eu escolheria um banco de dados se houvesse muitas leituras e talvez você precise de uma pesquisa mais rápida usando consultas.

Confira também esta postagem: http://android-developers.blogspot.in/2009/02/faster-screen-orientation-change.html para uma opção específica da atividade.

Outras dicas

É importante observar que se você estiver usando uma classe singleton para armazenar suas informações e seu aplicativo for forçado a parar, as informações serão apagadas.

Para preferências compartilhadas, as informações permanecerão as mesmas.

Espero que isto ajude.

Existe um serializador Java, não tenho certeza se é isso que você precisa.

Eu pessoalmente uso o GSON para tudo isso.É uma biblioteca do Google para trabalhar com JSON.Ele permite serializar objetos em uma representação eficiente de strings.

Usei isso principalmente para comunicação de serviço RESTful, mas aprendi que funciona muito bem para armazenar representação de objeto no SQLLite ou qualquer outra coisa.Posso inflar objetos muito facilmente dessa maneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top