|
June 13, 2016
|

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

More articles

Como transformar um website em aplicativo?

November 14, 2018

É possível instalar aplicativos Android no Windows?

November 9, 2018

10 dicas de como criar um aplicativo para todas as plataformas

October 24, 2018

6 aplicativos Android que você precisar ter no seu celular

October 17, 2018