Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da Mobile magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Persistência de dados com Android: Muito além do SQLite - Revista WebMobile Magazine 36
O surgimento de novas tecnologias para o desenvolvimento de aplicativos para a plataforma móvel já concebeu modelos mais sofisticados de persistência. Essas ferramentas, além de facilitar o processo de persistência, dão ao usuário opções para pe
Mobile magazine 36
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Mobile magazine 36
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Mobile magazine 36
Hoje, é muito difícil pensar na concepção de um aplicativo, seja ele para a plataforma web, desktop ou mobile, sem antes imaginar os procedimentos necessários para a persistência de seus dados. Essa persistência pode ser simples, como armazenar a pontuação de um usuário em um jogo, armazenar as configurações do aplicativo, como usuário, senha, volume do jogo, nível de dificuldade, podendo ser incrementado para uma persistência mais sofisticada, armazenando dados em múltiplas tabelas, estando estas relacionadas entre si, ou, até mesmo, integrando diferentes fontes de informações, como por exemplo a base de dados existente em um aparelho celular tradicional e um repositório remoto de dados existente na web.
Em plataformas móveis mais antigas, este trabalho era muito trabalhoso. Podemos citar como exemplo a primeira versão da plataforma Java ME, onde a persistência era realizada como nos velhos programas desenvolvidos em Clipper ou Cobol, utilizando a persistência de dados binário, onde não existia banco de dados e nem tabelas, apenas arquivos, e os dados eram armazenados um após o outro (sequêncial), cabendo inclusive ao programador delimitar os campos persistidos, separando-os com caracteres especiais ou marcadores (como os metadados existentes nos arquivos xml de hoje).
Felizmente, para nós programadores e para o mundo mobile, o Java ME evoluiu muito, até mesmo alguns frameworks foram criados para burlar as dificuldades impostas pelo modelo de persistência existente, um bom exemplo é o framework brasileiro Floggy.
Além disso, o surgimento de novas plataformas para o desenvolvimento de aplicativos para a plataforma móvel já concebeu modelos mais sofisticados de persistência, sendo muitas vezes melhores que alguns modelos existentes em outras plataformas menos limitadas, como desktop e web.
Essas ferramentas, além de facilitar o processo de persistência, dão ao usuário opções para persistência, podendo ser escolhido o que mais se adapta a um problema específico.
Dentre as plataformas para desenvolvimento móvel, sem dúvida a que mais se popularizou nos últimos anos foi o Android. Com sua arquitetura já projetada para aparelhos não tão limitados quanto os tradicionais aparelhos celulares que rodam Java ME, mais abrangente do que o tradicional iPhone, uma vez que os aparelhos que rodam Android não são tão caros, e ainda contam com APIs (Application Programming Interface) que permitem a utilização de recursos nativos do aparelho.
Para a persistência de dados, muitos desenvolvedores Android utilizam o tradicional SQLite, uma ótima e robusta opção, mas que muitas vezes é utilizado para armazenar dados simples, como conteúdo de campos, configurações do aplicativo e pequenas quantidades de dados.
Por este motivo, o objetivo deste artigo é apresentar novas técnicas de persistência, essas simples e ágeis, que permitem a persistência de pequenas quantidades de dados. São elas:
• Shared Preferences;
• PreferenceActivity;
• Internal Storage;
• Armazenamento em Cache;
• External Storage.
Utilizando Shared Preferences
O Shared Preference é um framework Android que permite armazenar dados de tipo primitivo utilizando o formato chave-valor. Ele permite trabalhar com todos os tipos primitivos incluindo também o tipo String, tratado como tal em muitas plataformas.
Como o nome sugere, o Shared Preference é perfeito para armazenar as preferências e configurações de uma aplicação, onde, geralmente, persistimos apenas alguns poucos dados, de forma rápida e simples, sendo que na maioria das vezes esses dados são dos tipos primitivos.
Para exemplificar o uso desse framework, será desenvolvido um aplicativo simples, onde uma única informação booleana, que corresponde a uma configuração do aplicativo será armazenada. A tela desse aplicativo é apresentada na Figura 1.
Para o desenvolvimento desta interface, será necessário criar um projeto Android. Para este desenvolvimento, pode ser utilizada a IDE Eclipse ou Netbeans (ou outra IDE com suporte a Android). Ambas trabalham de forma simular com o desenvolvimento de aplicações nesta plataforma.
Na Listagem 1 apresentamos o arquivo main.xml, sendo que este define a interface visual do aplicativo apresentado na Figura 1.
Listagem 1. Main.xml - Arquivo xml referente a interface gráfica do aplicativo.
01. <?xml version="1.0" encoding="utf-8"?>
02. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03. android:orientation="vertical"
04. android:layout_width="fill_parent"
05. android:layout_height="fill_parent" >
06. <ImageView android:layout_width="fill_parent"
"
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da Mobile magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais!

6 COMENTÁRIOS
Jf Consultores Ltda.
Desculpe se eu não acompanheir o raciocinio, mas porque na linha
01. Da listagem 3 - SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
o metodo recebe 0 como segundo parametro e na linha:
02. online = settings.getBoolean("online", false);
o segundo metodo é passado um "false", porque é bool? se fosse um int seria 0 e uma string seria ""?
01. Da listagem 3 - SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
o metodo recebe 0 como segundo parametro e na linha:
02. online = settings.getBoolean("online", false);
o segundo metodo é passado um "false", porque é bool? se fosse um int seria 0 e uma string seria ""?
[há +1 mês] -
Responder
[autor]
Ricardo Ogliari
O método getSharedPreferences recebe dois parâmetros, o primeiro é o nome da shared preference.
O segundo é um inteiro que define o modo de uso das preferências, podem ser 4 opções:
MODE_PRIVATE
MODE_WORLD_READABLE
MODE_WORLD_WRITEABLE
MODE_MULTI_PROCESS
O valor 0 refere-se a MODE_PRIVATE, onde somente o aplicativo que criou as preferêbcias pode acessá-lo.
------------------
O getBoolean é da classe SharedPreferences e também recebe dois parâmetros.
O primeiro é a chave (String) da preferência a ser recuperada.
O segundo parâmetro é um valor padrão que será retornado caso a preferência não exista.
Ficou mais claro agora?
O segundo é um inteiro que define o modo de uso das preferências, podem ser 4 opções:
MODE_PRIVATE
MODE_WORLD_READABLE
MODE_WORLD_WRITEABLE
MODE_MULTI_PROCESS
O valor 0 refere-se a MODE_PRIVATE, onde somente o aplicativo que criou as preferêbcias pode acessá-lo.
------------------
O getBoolean é da classe SharedPreferences e também recebe dois parâmetros.
O primeiro é a chave (String) da preferência a ser recuperada.
O segundo parâmetro é um valor padrão que será retornado caso a preferência não exista.
Ficou mais claro agora?
[há +1 mês] -
Responder

Flávio Antonio Severino
Pessoal,
Ficou uma dúvida quando eu uso o PreferenceActivity.
A persistencia é controlada de forma automática. E seu eu quiser recuperar essas informações em outra parte da aplicação? como eu faço?
Por exemplo:
Tenho um layout do preference activity que persiste. Por exemplo a cor de fundo da tela.
Como faço para buscar essa config. nas demais telas?
Obrigado.
Ficou uma dúvida quando eu uso o PreferenceActivity.
A persistencia é controlada de forma automática. E seu eu quiser recuperar essas informações em outra parte da aplicação? como eu faço?
Por exemplo:
Tenho um layout do preference activity que persiste. Por exemplo a cor de fundo da tela.
Como faço para buscar essa config. nas demais telas?
Obrigado.
[há +1 mês] -
Responder
[autor]
Ricardo Ogliari
Te confesso que não tenho 100% de certeza na resposta.
Acredito que para você ter preferência espalhadas pelo seu aplicativo você deve usar a SharedPreference mesmo. Oque você pode fazer é controlar o ciclo de vida da PreferenceActivity, no momento que o usuário sair da tela, vc replica as suas preferências em um SharedPreference.
Att.
Ricardo Ogliari
Acredito que para você ter preferência espalhadas pelo seu aplicativo você deve usar a SharedPreference mesmo. Oque você pode fazer é controlar o ciclo de vida da PreferenceActivity, no momento que o usuário sair da tela, vc replica as suas preferências em um SharedPreference.
Att.
Ricardo Ogliari
[há +1 mês] -
Responder
Flávio Antonio Severino
Ricardo,
o shared grava as informações em um arquivo, não há como eu saber em qual arquivo o prefenceactivity grava as preferences?
Sendo assim, uma vez que eu saiba em qual arquivo o PreferenceActivity grava as preferences eu consigo abrir ele dentro da propria aplicação pelo shared e ter acesso a uma preferencia especifica.
o shared grava as informações em um arquivo, não há como eu saber em qual arquivo o prefenceactivity grava as preferences?
Sendo assim, uma vez que eu saiba em qual arquivo o PreferenceActivity grava as preferences eu consigo abrir ele dentro da propria aplicação pelo shared e ter acesso a uma preferencia especifica.
[há +1 mês] -
Responder
[autor]
Ricardo Ogliari
Realmente não sei onde são gravados estes dados.
Mas se descobrir isso tua lógica está correta.
Mas se descobrir isso tua lógica está correta.
[há +1 mês] -
Responder
[Este post ainda não foi associado a uma sequência]
Você está em:
canal mobile
Publicidade
Ricardo Ogliari
Space do autor
Atua no mundo mobile a 7 anos. Bacharel em Ciência da Computação. Pós-Graduado em Web: Estraté©gias de Inovação e Tecnologia.
Space do autor


0
0
