|
June 13, 2016|
425
0
Persistencia de dados no TotalCross
A persistência de dados no TotalCross pode ser feita de duas formas. A primeira é usando arquivos, quando se deseja gravar dados simples, como as configurações de um aplicativo. A segunda é usando o banco de dados SQLite, para gravar tabelas e dados relacionados.
Imagine que você tenha uma classe de configurações do aplicativo e queira persistir ela. Não vale a pena usar banco de dados para isso, é mais facil usar um arquivo. Em primeiro lugar, deve-se escolher onde gravar o arquivo. Devido às restrições de segurança dos sistemas operacionais, o ideal é gravar na pasta da aplicação. No TotalCross, existe uma forma fácil de definir isso: usando /device no nome do arquivo. Por fim, para poder gravar os dados, que são objetos ou tipos primitivos, utilizamos a classe DataStream.
A classe Configuração abaixo dá uma idéia de como fazer:
public class Configuracao { private static final int VERSAO = 1; public int versaoAtual; // versao da configuracao public double valorProduto; public String caminhoDados; public void grava() throws Exception { File f = new File("device/config.dat", File.CREATE_EMPTY); DataStream ds = new DataStream(f); ds.writeInt(VERSAO); ds.writeDouble(valorProduto); ds.writeString(caminhoDados); f.close(); } public Configuracao() throws Exception { try { File f = new File("device/config.dat", File.READ_ONLY); DataStream ds = new DataStream(f); versaoAtual = ds.readInt(); if (versaoAtual >= 1) { valorProduto = ds.readDouble(); caminhoDados = ds.readString(); } f.close(); } catch (FileNotFoundException fnfe) { // arquivo não criado ainda } } }
A idéia de gravar um valor pra versão da configuração permite que você adicione campos posteriormente sem quebrar a compatibilidade com o arquivo. Então, se você quisesse gravar um novo campo, faria assim:
private static final int VERSAO = 2; public String tokenPush; ... public void grava() throws Exception { ... // após o ultimo ds.writeString ds.writeString(tokenPush); f.close(); } public Configuracao() throws Exception { ... // após o } do if (versaoAtual >= 1) if (versaoAtual >= 2) tokenPush = ds.readString(); f.close(); }
Na inicialização da sua aplicação você deve criar uma instância de Configuração, e mandar gravar no método onExit.
public class MinhaApp extends MainWindow { public static Configuracao config; public void initUI() { ... config = new Configuracao(); } public void onExit() { ... config.grava(); } }
Esse exemplo ensinou diversas funcionalidades do TotalCross, como uso da classe File, DataStream e como criar um arquivo de configurações que pode ser expandido com o tempo.
No próximo artigo falaremos sobre persistência de dados usando o SQLite.
Comments