Android – Opções de Armazenamento (persistência de dados)

Opções de Armazenamento

“Android fornece várias opções para você salvar os dados de aplicativos persistentes. A solução que você escolher depende das suas necessidades específicas, como se os dados devem ser privados de sua aplicação ou acessíveis a outras aplicações (e do usuário) e quanto espaço os seus dados requer.”

Vou mostrar as seguintes formas de armazenamento neste post:

Mudamos, veja em: http://helpdev.com.br/2012/08/03/android-opcoes-de-armazenamento/

SharedPreferences

Armazenar dados particulares primitivos em pares chave-valor.

Internal Storage

Armazenar dados privados na memória do dispositivo. ( com persistência de objetos )

External Storage

Armazenar dados públicos sobre o armazenamento externo compartilhado.

SQLite Databases

Armazenar dados estruturados em um banco de dados privado.

Usando o SharedPreferences

A classe SharedPreferences fornece um quadro geral que permite salvar e recuperar pares chave-valor de tipos de dados primitivos. Você pode usar o SharedPreferences para salvar os dados primitivos: booleans, floats, ints, longs, e strings. Estes dados irão persistir na sessões do usuário (mesmo que sua aplicação seja morta).

Mudamos, veja em: http://helpdev.com.br/2012/08/03/android-opcoes-de-armazenamento/

Para obter uma objeto SharedPreferences para sua aplicação, utilize um dos dois métodos:

  • getSharedPreferences() – Use esta se você precisar de vários arquivos de preferências identificadas pelo nome, que você especificar com o primeiro parâmetro.
  • getPreferences() – Use isto se você só precisa de um arquivo de preferências para a sua atividade. Porque este será o arquivo de preferências somente para sua atividade, você não fornecerá um nome.

Para escrever valores:

  1. Chame o método edit() para obter uma SharedPreferences.Editor .
  2. Adicionar valores com métodos tais como putBoolean() e putString().
  3. Persistir os novos valores com commit()

Para ler os valores, use SharedPreferences métodos como getBoolean() e getString() .

Aqui está um exemplo que salva uma preferência para o modo silencioso keypress em uma calculadora:

Mudamos, veja em: http://helpdev.com.br/2012/08/03/android-opcoes-de-armazenamento/

Usando o Armazenamento Interno

Você pode salvar arquivos diretamente na memória interna do aparelho. Por padrão, os arquivos salvos para o armazenamento interno são privados de sua aplicação e outros aplicativos não possam acessá-los. Quando o usuário desinstala o aplicativo, esses arquivos são removidos.

Para criar e gravar um arquivo privado para o armazenamento interno:

  1. Chamar openFileOutput() com o nome do ficheiro e do modo de funcionamento. Isso retorna um FileOutputStream .
  2. Escreva para o arquivo com o write() .
  3. Fechar o fluxo com close() .

Por exemplo:

Mudamos, veja em: http://helpdev.com.br/2012/08/03/android-opcoes-de-armazenamento/

Armazenando objetos Serializaveis

  1. Chamar getFileStreamPath() com o nome do ficheiro e do modo de funcionamento. Isso retorna um File .
  2. Crie um FileOutputStream atravez do seu File
  3. Crie um ObjectOutputStream atravéz de seu FileOutputStream
  4. Grave o objeto com writeObject() de seu ObjectOutputStream.

*Lembre-se que seu objeto deve implementar java.io.Serializable

Exemplo:

Mudamos, veja em: http://helpdev.com.br/2012/08/03/android-opcoes-de-armazenamento/


Usando armazenamento externo

Cada dispositivo compatível com Android suporta uma “memória externa” compartilhada que você pode usar para salvar arquivos. Isso pode ser uma mídia de armazenamento removível (como um cartão SD) ou uma memória interna (não removível). Os arquivos salvos para o armazenamento externo são de leitura para todos e pode ser modificado pelo usuário quando permitem armazenamento em massa USB para transferir arquivos de um computador.

Atenção: Os arquivos externos podem desaparecer se o usuário monta o armazenamento externo em um computador ou remove os meios de comunicação, e não há segurança aplicada sobre os arquivos que você salvar para o armazenamento externo. Todas as aplicações podem ler e gravar arquivos colocados no armazenamento externo e o usuário pode removê-los.

Verificar disponibilidade mídia

Antes de fazer qualquer trabalho com o armazenamento externo, você deve sempre chamar Environment.getExternalStorageState() para verificar se a mídia está disponível. A mídia pode ser montada a um computador, faltando, somente leitura, ou em algum outro estado. Por exemplo, aqui está como você pode verificar a disponibilidade:

Mudamos, veja em: http://helpdev.com.br/2012/08/03/android-opcoes-de-armazenamento/

Acessar arquivos em armazenamento externo

Se você estiver usando API Level 8 ou superior, use getExternalFilesDir() para abrir um File que representa o diretório de armazenamento externo onde você deve salvar seus arquivos. Este método utiliza um type parâmetro que especifica o tipo de subdiretório que você deseja, como Environment.DIRECTORY_MUSIC e Environment.DIRECTORY_RINGTONES (null para receber a raiz do diretório do seu aplicativo). Este método irá criar o diretório apropriado, se necessário. Ao especificar o tipo de diretório, você garante que o scanner do Android mídia será devidamente categorizar seus arquivos no sistema (por exemplo, ringtones são identificados como ringtones e não de música). Se o usuário desinstala o aplicativo, este diretório e todo seu conteúdo será apagado.

Se você estiver usando API Nível 7 ou inferior, use Environment.getExternalStorageDirectory() , para abrir um File que representa a raiz do armazenamento externo. Você deve escrever os seus dados no seguinte diretório:
/Android/dados/<nome_do_pacote>/files/

Salvamento de arquivos que devem ser compartilhadas

Se você deseja salvar os arquivos que não são específicos para sua aplicação e que não devem ser excluídos quando o aplicativo é desinstalado, salvá-los em uma das listas públicas sobre o armazenamento externo. Esses diretórios devem ficar  na raiz do armazenamento externo, como Music/ , Pictures/ , Ringtones/ , e outros.

Na API Nível 8 ou superior, use Environment.getExternalStoragePublicDirectory() , passando o tipo de diretório público que você quer, como Environment.DIRECTORY_MUSIC e Environment.DIRECTORY_RINGTONES , ou outros. Este método irá criar o diretório apropriado, se necessário.

Mudamos, veja em: http://helpdev.com.br/2012/08/03/android-opcoes-de-armazenamento/

Se você estiver usando API Nível 7 ou inferior, use Environment.getExternalStorageDirectory() para abrir um File que representa a raiz do armazenamento externo, em seguida, salvar seus arquivos compartilhados em um dos seguintes diretórios:

  • Music/ – scanner de mídia classifica todas as mídias encontradas aqui, como a música do usuário.
  • Podcasts/ – Scanner de mídia classifica todas as mídias encontradas aqui, como um podcast.
  • Ringtones/ – Scanner de mídia classifica todas as mídias encontradas aqui, como um ringtone.
  • Alarms/ – Mídia leitor classifica todos os meios encontrados aqui, como um som de alarme.
  • Notifications/- Scanner de mídia classifica todas as mídias encontradas aqui, como um som de notificação.
  • Pictures/ – Todas as fotos (excluindo as tiradas com a câmara).
  • Movies/ – Todos os filmes (excluindo as medidas tomadas com a câmara de vídeo).
  • Download/ – downloads diversos.

O método de gravação é similar aos exemplos já mostrados usando FileOutputStream e Input para ler.

Mudamos, veja em: http://helpdev.com.br/2012/08/03/android-opcoes-de-armazenamento/

Usando Banco de Dados

Android oferece suporte completo para SQLite bancos de dados. Qualquer banco de dados que você criar poderá ser acessado pelo nome de qualquer classe na aplicação, mas não fora do aplicativo.

O método recomendado para criar um banco de dados SQLite novo é criar uma subclasse de SQLiteOpenHelper e substituir o método onCreate() , no qual você pode executar um comando SQLite para criar tabelas no banco de dados.

Para mais informações criei um topico bem mais especifico:
http://helpdev.com.br/2012/05/15/banco-de-dados-para-android/

FONTE: http://goo.gl/4l4C6

Um comentário sobre “Android – Opções de Armazenamento (persistência de dados)

  1. Pingback: Android – Opções de Armazenamento (persistência de dados) « Arthur Lehdermann

Deixe um comentário