SlideShare uma empresa Scribd logo
1 de 33
PERSISTÊNCIA DE DADOS 
NO ANDROID 
“Muitas vezes, as pessoas 
não sabem o que elas 
querem até que você 
mostre a elas.” (Steve Jobs)
CONTEÚDO 
•Internal Storage 
•Shared Preferences 
•SQLite Databases
PERSISTÊNCIA DE DADOS 
• Existem 3 formas principais de armazenar dados 
no dispositivo 
– Arquivos comuns (formato texto ou binário) 
• Classes FileInputStream e FileOutputStream 
• Armazenados em /data/data/<pacote>/files 
– Arquivos de preferências 
• Classe SharedPreferences 
– Bancos de Dados usando SQLite 
• Classes SQLiteDatabase, SQLiteOpenHelper 
• Armazenados em /data/data/<pacote>/databases
CLASSE ANDROID.OS.ENVIRONMENT 
MÉTODO FUNÇÃO 
static File getDataDirectory() Retorna o diretório de dados do Android. 
static File 
getDownloadCacheDirectory() 
Retorna o diretório onde o Android salva os downloads e cache. 
static File 
getExternalStorageDirectory() 
Retorna o diretório de armazenamento externo (p.ex. cartão de 
memória) 
static File 
getExternalStoragePublicDirect 
ory(tipo) 
Retorna o diretório público de armazenamento externo para um tipo de 
arquivo. Tipo pode ser: DIRECTORY_DCIM, DIRECTORY_DOWNLOADS, 
DIRECTORY_MOVIES, DIRECTORY_MUSIC, DIRECTORY_PICTURES, etc. 
static String 
getExternalStorageState() 
Retorna o estado do dispositivo de armazenamento externo principal. 
Retorno pode ser: 
MEDIA_MOUNTED (disponível para uso leitura e escrita), 
MEDIA_MOUNTED_READ_ONLY (disponível apenas para leitura), 
MEDIA_REMOVED (dispositivo não presente), MEDIA_SHARED 
(dispositivo presente, não montado e compartilhado via USB). Outros: 
MEDIA_UNMOUNTABLE, MEDIA_UNMOUNTED, 
MEDIA_BAD_REMOVAL, MEDIA_CHECKING 
static boolean 
isExternalStorageRemovable() 
Se o dispositivo externo de armazenamento é removível ou não.
ARQUIVOS COMUNS 
• Métodos da classe Context 
FileInputStream 
openFileInput(String name) 
Abre um arquivo privado associado a aplicação para leitura. Argumento 
name não pode conter ‘/’. 
FileOutputStream 
openFileOutput(String name, 
int mode) 
Abre um arquivo privado associado a aplicação para escrita. Argumento 
mode pode ser Context.MODE_PRIVATE ou Context.MODE_APPEND. 
– FileInputStream: contém métodos para ler bytes 
– FileOutputStream: contém métodos para escrever bytes 
– InputStreamReader: pode ser construído a partir de um 
FileInputStream e contém métodos para ler caracteres 
– OutputStreamWriter: pode ser construído a partir de um 
FileOuputStream e contém métodos para escrever 
caracteres
ARQUIVOS COMUNS 
• Exemplo
ARQUIVOS COMUNS – LOCALIZAÇÃO 
• Exemplo
ANDROID.CONTENT.SHAREDPREFERENCES 
• Classe para armazenar preferências ou configurações da 
aplicação 
• É possível usar quantas quiser, desde que associadas a um 
nome de arquivo 
• Guarda informações na forma de pares: chave-valor 
• Para obter a instância desta classe associada ao nome de 
arquivo “preferencias”: 
SharedPreferences pref = 
Context.getSharedPreferences(“preferencias”, 0); 
• Se o arquivo ainda não existir será criado 
• Para editar usar a classe SharedPreferences.Editor 
SharedPreferences.Editor editor = prefs.edit();
ANDROID.CONTENT.SHAREDPREFERENCES 
• Métodos 
boolean contains(String key) Retorna true caso a chave key exista. 
boolean getBoolean(String 
key, boolean) 
float getFloat(String key, float) 
int getInt(String key, int) 
long getLong(String key, long) 
String getString(String key, 
String) 
Retorna o valor de uma chave. 
O segundo parâmetro indica o valor default que 
deve ser retornado caso a chave não exista. 
Note que é necessário que o desenvolvedor saiba o 
tipo do dado armazenado na chave. Caso a chave 
exista mas o tipo seja diferente do especificado no 
método será lançado um ClassCastException. 
SharedPreferences.Editor Retorna um editor para as preferências que permite 
editar e salvar informações.
ANDROID.CONTENT.SHAREDPREFERENCES.E 
DITOR 
• Usada para editar as preferências 
boolean commit() Salva as preferências no objeto SharedPreferences associado e em 
disco. Operação síncrona, ou seja, só retorna após ter salvo em 
disco retornando true em caso de sucesso, ou false senão. 
void apply() Aplica os novos valores das preferências ao objeto em memória e 
retorna. O armazenamento em disco será feito de forma assíncrona, 
ou seja, não é possível saber se houve algum error durante o 
armazenamento. 
clear() Remove todos os valores de preferências do objeto. 
putBoolean(String key, 
boolean) 
putFloat(String key, float) 
putInt(String key, int) 
putLong(String key, long) 
putString(String key, String) 
Adiciona ou altera o valor de uma chave. O nome do método e o 
segundo parâmetro indicam o tipo do valor da chave. 
remove(String key) Remove a chave definida por key e consequentemente o seu valor.
ANDROID.CONTENT.SHAREDPREFERENCES 
• Exemplo
ANDROID.CONTENT.SHAREDPREFERENCES 
• Exemplo
BANCO DE DADOS - SQLITE 
• Consiste em tabelas onde dados podem 
inseridos, modificados ou excluídos 
• O Android suporta um o modelo lógico 
relacional para armazenamento de dados 
• No Android, é utilizado o SQLite para 
gerenciar as tabelas de bancos de dados 
– www.sqlite.org 
– Is a software library that implements a self-contained, serverless, zero-configuration, 
transactional SQL database engine. SQLite is the most widely 
deployed SQL database engine in the world.
BANCO DE DADOS - SQLITE 
• SQLite implementa a maior parte do 
padrão SQL-92; 
• Suporte parcial para triggers e queries 
complexas; 
• SQLITE não implementa integridade 
referencial seguindo o tradicional 
modelo de restrições com chave 
estrangeira.
BANCO DE DADOS - SQLITE 
• API do Android (executar SQL) 
– Adotado aqui pois permite criar o BD pela aplicação 
• Cliente gráfico do SQLite 
– SQLite Expert Personal (gratuito) 
• http://www.sqliteexpert.com/index.html 
• Usando SQL via linha de comando 
– Programa na pasta do SDK do Android 
• <pasta_android>android-sdk-windowstoolssqlite3.exe 
• Nos 2 últimos, após criar, é preciso mover o arquivo para a 
pasta /data/data/<pacote>/databases do emulador 
– No eclipse (com emulador aberto): 
• Window > Show view > Other... > FileExplorer
ANDROID.DATABASE.SQLITE.SQLITEOPENHELPER 
• Auxilia abertura e criação de um banco de dados 
SQLiteOpenHelper(Context, String name, 
SQLiteDatabase.CursorFactory, int version) 
Cria um objeto para auxiliar no 
gerenciamento da base de dados. 
SQLiteDatabase getReadableDatabase() Cria ou abre um banco de dados apenas 
para leitura. 
SQLiteDatabase getWritableDatabase() Cria ou abre um banco de dados para 
leitura e escrita. 
void onCreate(SQLiteDatabase db) Chamado quando o banco de dados 
precisa ser criado, ou seja, não existe. 
void onOpen(SQLiteDatabase db) Chamado quando o banco de dados é 
aberto. 
void onUpgrade(SQLiteDatabase db, int 
oldVersion, int newVersion) 
Chamado quando a versão do banco de 
dados sendo aberto é diferente da versão 
existente.
ANDROID.DATABASE.SQLITE.SQLITEDATABASE 
• Representa o banco de dados e executa operações de 
consulta, inclusão, alteração e exclusão de registros 
static SQLiteDatabase 
Abre banco de dados de acordo com os flags: 
openDatabase(String path, 
OPEN_READWRITE, OPEN_READONLY, 
CursorFactory factory, flags) 
CREATE_IF_NECESSARY, NO_LOCALIZED_COLLATORS. 
static SQLiteDatabase 
openOrCreateDatabase(String path, 
CursorFactory factory) 
static SQLiteDatabase 
openOrCreateDatabase(File file, 
CursorFactory factory) 
Abre ou cria banco de dados. 
Equivalente a usar openDatabase(…) com 
flags = CREATE_IF_NECESSARY 
boolean isOpen() Verifica se o banco de dados está aberto. 
void close() Fecha o banco de dados. 
void execSQL(String sql) Executa script SQL que não seja SELECT. Exemplo: 
CREATE TABLE, INSERT, UPDATE, etc.
ANDROID.DATABASE.SQLITE.SQLITEDATABASE 
Cursor query(String table, String[] 
columns, String selection, String[] 
selectionArgs, String groupBy, String 
having, String orderBy) 
Cursor query(table, columns, 
selection, selectionArgs, groupBy, 
having, orderBy, limit) 
Cursor query(boolean distinct, table, 
columns, selection, selectionArgs, 
groupBy, having, orderBy, String limit) 
Mostra e executa um comando SQL. 
long insert(table, null, ContentValues 
values) 
Insere um registro e retorna o id. 
int update(table, ContentValues 
values, whereClause, whereArgs) 
Altera registro(s) e retorna quantidade de 
linhas modificadas. 
int delete(table, whereClause, 
whereArgs) 
Deleta registro(s) e retorna quantidade de 
linhas modificadas.
EXEMPLO 01 – CRIANDO/CONECTANDO 
AO BANCO DE DADOS 
Classe estende SQLiteOpenHelper e 
permite gerenciar SQLiteDatabase’s.
EXEMPLO 01 – CRIANDO/CONECTANDO 
AO BANCO DE DADOS 
Implementação do método onCreate() 
do banco de dados. 
Implementação do método 
onUpgrade() do banco de dados.
EXEMPLO 01 – CRIANDO/CONECTANDO 
AO BANCO DE DADOS 
Recuperando uma instância do 
banco de dados para escrita.
LOCALIZAÇÃO DA BASE DE DADOS
ANDROID.CONTENT.CONTENTVALUES 
• ContentValues 
– Usado para armazenar o conteúdo de um 
registro para uma operação 
– Equivalente a um HashMap 
• put(String key, valor)
CURSORES 
• Permite diversas operações sobre um 
conjunto de dados retornados 
– Posicionamento (isFirst(), isLast(), isBeforeFirst(), 
isAfterLast()); 
– Navegação(moveToFirst(), moveToLast(), moveToNext(), 
moveToPrevious(), move(n)); 
– Extração de campos(getInt, getString, getFloat, getBlob, 
getDate, etc.); 
– Inspeção de esquema(getColumnName, 
getColumnNames, getColumnIndex, getColumnCount, 
getCount).
CURSORES 
• Cursor 
–Implementado por 
ANDROID.DATABASE.CURSOR 
–Equivalente a um ResultSet no JDBC 
–Lista de resultados de uma consulta no 
banco
EXEMPLO 02 – MANIPULAÇÃO DA BASE DE 
DADOS – CURSORES
EXEMPLO 03 – MANIPULAÇÃO DA BASE DE 
DADOS – INSERT
EXEMPLO 04 – MANIPULAÇÃO DA BASE DE 
DADOS – UPDATE
EXEMPLO 05 – MANIPULAÇÃO DA BASE DE 
DADOS – DELETE
SQLITE DATATYPES 
• Suportados na versão 3 
– NULL. The value is a NULL value. 
– INTEGER. The value is a signed integer, stored in 1, 2, 3, 
4, 6, or 8 bytes depending on the magnitude of the 
value. 
– REAL. The value is a floating point value, stored as an 8- 
byte IEEE floating point number. 
– TEXT. The value is a text string, stored using the 
database encoding (UTF-8, UTF-16BE or UTF-16LE). 
– BLOB. The value is a blob of data, stored exactly as it was 
input.
SQLITE TRASACTIONS 
• Controle transacional é desejável para 
garantir a consistência ou evitar perdas 
de dados; 
• Normalmente uma transação segue a 
premissa: “Sucesso completo ou falha 
total!”; 
• O Android/SQLite possuem suporte para 
controle transacional.
SQLITE TRASACTIONS - EXEMPLO 
Caso não seja realizado um 
setTransactionSuccessful() = 
commit, será realizado 
automaticamente um 
rollback.
REFERÊNCIAS 
• Data Storage. 2012. Disponível em: < 
http://developer.android.com/guide/topics/data/da 
ta-storage.html >. Acesso em: 20 ago. 2012. 
• LECHETA, Ricardo R. Google android: aprenda a 
criar aplicações para dispositivos móveis com o 
android SDK. 2. ed., rev. e ampl. São Paulo: Novatec, 
2010. 608 p. ISBN 9788575222447. 
• MURPHY, Mark L. Beginning android. New York, 
USA: Apress, 2009. xxii, 361 p. ISBN 
9781430224198.

Mais conteúdo relacionado

Mais procurados

Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
 
Basic oracle-database-administration
Basic oracle-database-administrationBasic oracle-database-administration
Basic oracle-database-administrationsreehari orienit
 
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)Darshankumar Prajapati
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVAinnovalabcun
 
Data Persistence in Android with Room Library
Data Persistence in Android with Room LibraryData Persistence in Android with Room Library
Data Persistence in Android with Room LibraryReinvently
 
Chapter 02: Classes Objects and Methods Java by Tushar B Kute
Chapter 02: Classes Objects and Methods Java by Tushar B KuteChapter 02: Classes Objects and Methods Java by Tushar B Kute
Chapter 02: Classes Objects and Methods Java by Tushar B KuteTushar B Kute
 
Android - Data Storage
Android - Data StorageAndroid - Data Storage
Android - Data StorageMingHo Chang
 
Oracle Architecture
Oracle ArchitectureOracle Architecture
Oracle ArchitectureNeeraj Singh
 
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...rehaniltifat
 
Curso Uml 2.4 Diagramas De Comportamiento
Curso Uml   2.4 Diagramas De ComportamientoCurso Uml   2.4 Diagramas De Comportamiento
Curso Uml 2.4 Diagramas De ComportamientoEmilio Aviles Avila
 
Oracle database 12c sql worshop 2 student guide vol 1
Oracle database 12c sql worshop 2 student guide vol 1Oracle database 12c sql worshop 2 student guide vol 1
Oracle database 12c sql worshop 2 student guide vol 1Otto Paiz
 
Managing users & tables using Oracle Enterprise Manage
Managing users & tables using Oracle Enterprise ManageManaging users & tables using Oracle Enterprise Manage
Managing users & tables using Oracle Enterprise ManageNR Computer Learning Center
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOAndré Victor
 

Mais procurados (20)

Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Basic oracle-database-administration
Basic oracle-database-administrationBasic oracle-database-administration
Basic oracle-database-administration
 
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)
Multiple Flat Files(CSV) to Target Table in ODI12c(12.2.1.0.0)
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
 
Data Persistence in Android with Room Library
Data Persistence in Android with Room LibraryData Persistence in Android with Room Library
Data Persistence in Android with Room Library
 
Chapter 02: Classes Objects and Methods Java by Tushar B Kute
Chapter 02: Classes Objects and Methods Java by Tushar B KuteChapter 02: Classes Objects and Methods Java by Tushar B Kute
Chapter 02: Classes Objects and Methods Java by Tushar B Kute
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Android - Data Storage
Android - Data StorageAndroid - Data Storage
Android - Data Storage
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
MySQL
MySQLMySQL
MySQL
 
Oracle Architecture
Oracle ArchitectureOracle Architecture
Oracle Architecture
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
 
Curso Uml 2.4 Diagramas De Comportamiento
Curso Uml   2.4 Diagramas De ComportamientoCurso Uml   2.4 Diagramas De Comportamiento
Curso Uml 2.4 Diagramas De Comportamiento
 
Oracle database 12c sql worshop 2 student guide vol 1
Oracle database 12c sql worshop 2 student guide vol 1Oracle database 12c sql worshop 2 student guide vol 1
Oracle database 12c sql worshop 2 student guide vol 1
 
Less16 Recovery
Less16 RecoveryLess16 Recovery
Less16 Recovery
 
JDBC
JDBCJDBC
JDBC
 
U1 s3 introducción a uml parte 1
U1 s3 introducción a uml parte 1U1 s3 introducción a uml parte 1
U1 s3 introducción a uml parte 1
 
Managing users & tables using Oracle Enterprise Manage
Managing users & tables using Oracle Enterprise ManageManaging users & tables using Oracle Enterprise Manage
Managing users & tables using Oracle Enterprise Manage
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTO
 

Destaque

Android Banco de Dados
Android Banco de DadosAndroid Banco de Dados
Android Banco de DadosAlex Braz
 
Google Cloud Messaging for Android
Google Cloud Messaging for AndroidGoogle Cloud Messaging for Android
Google Cloud Messaging for Androidedilsonmendes
 
Aula07 android conectividade
Aula07 android conectividadeAula07 android conectividade
Aula07 android conectividadeRoberson Alves
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google AndroidIury Teixeira
 
Descubra o potencial do seu smartphone Android
Descubra o potencial do seu smartphone AndroidDescubra o potencial do seu smartphone Android
Descubra o potencial do seu smartphone AndroidFlavio Mendes
 
Google Android - WTJatai
Google Android - WTJataiGoogle Android - WTJatai
Google Android - WTJataiCaelum
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidJosé Alexandre Macedo
 
Acessando Banco de Dados com o Android
Acessando Banco de Dados com o AndroidAcessando Banco de Dados com o Android
Acessando Banco de Dados com o AndroidFernando Anselmo
 
Desenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidDesenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidLucas Aquiles
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidJosé Alexandre Macedo
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceRicardo Rufino
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no androidAlexandre Antunes
 
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneEntenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneHenrique Perticarati
 

Destaque (15)

Android Banco de Dados
Android Banco de DadosAndroid Banco de Dados
Android Banco de Dados
 
Orm android
Orm androidOrm android
Orm android
 
Google Cloud Messaging for Android
Google Cloud Messaging for AndroidGoogle Cloud Messaging for Android
Google Cloud Messaging for Android
 
Aula07 android conectividade
Aula07 android conectividadeAula07 android conectividade
Aula07 android conectividade
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google Android
 
Descubra o potencial do seu smartphone Android
Descubra o potencial do seu smartphone AndroidDescubra o potencial do seu smartphone Android
Descubra o potencial do seu smartphone Android
 
Google Android - WTJatai
Google Android - WTJataiGoogle Android - WTJatai
Google Android - WTJatai
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma Android
 
Acessando Banco de Dados com o Android
Acessando Banco de Dados com o AndroidAcessando Banco de Dados com o Android
Acessando Banco de Dados com o Android
 
Desenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidDesenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google android
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDevice
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneEntenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
 
Android ppt
Android ppt Android ppt
Android ppt
 

Semelhante a Aula05 android persistencia

Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Erisvaldo Junior
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Erisvaldo Junior
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01julianabdpaiva
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdoJorge Luís Gregório
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniterAnderson Gonçalves
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptxacsme
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 
Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISIS
Desenvolvendo Aplicativos com  Zend Framework  e banco de dados CDS/ISISDesenvolvendo Aplicativos com  Zend Framework  e banco de dados CDS/ISIS
Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISISDomingos Teruel
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineOtávio Calaça Xavier
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHPLeonardo Soares
 

Semelhante a Aula05 android persistencia (20)

Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6
 
Banco de Dados - Android
Banco de Dados - AndroidBanco de Dados - Android
Banco de Dados - Android
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
 
2006 - ADONET.ppt
2006 - ADONET.ppt2006 - ADONET.ppt
2006 - ADONET.ppt
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Ado.net.exmplos.praticos
Ado.net.exmplos.praticosAdo.net.exmplos.praticos
Ado.net.exmplos.praticos
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISIS
Desenvolvendo Aplicativos com  Zend Framework  e banco de dados CDS/ISISDesenvolvendo Aplicativos com  Zend Framework  e banco de dados CDS/ISIS
Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISIS
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
 

Mais de Roberson Alves

Apresentação da Dissertação
Apresentação da DissertaçãoApresentação da Dissertação
Apresentação da DissertaçãoRoberson Alves
 
Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015Roberson Alves
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connectionRoberson Alves
 
eduAula08 phonegap arquivos
eduAula08 phonegap arquivoseduAula08 phonegap arquivos
eduAula08 phonegap arquivosRoberson Alves
 
Aula07 phonegap bussola_eventos
Aula07 phonegap bussola_eventosAula07 phonegap bussola_eventos
Aula07 phonegap bussola_eventosRoberson Alves
 
Aula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometroAula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometroRoberson Alves
 
Aula05 phonegap cadastro_contatos
Aula05 phonegap cadastro_contatosAula05 phonegap cadastro_contatos
Aula05 phonegap cadastro_contatosRoberson Alves
 
Aula04 phonegap componentes
Aula04 phonegap componentesAula04 phonegap componentes
Aula04 phonegap componentesRoberson Alves
 
Aula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapAula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapRoberson Alves
 
la 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapla 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapRoberson Alves
 
Aula08 android outros_recursos
Aula08 android outros_recursosAula08 android outros_recursos
Aula08 android outros_recursosRoberson Alves
 
Aula06 android localizacao
Aula06 android localizacaoAula06 android localizacao
Aula06 android localizacaoRoberson Alves
 
Aula04 android intents
Aula04 android intentsAula04 android intents
Aula04 android intentsRoberson Alves
 
Aula03 android layouts_views
Aula03 android layouts_viewsAula03 android layouts_views
Aula03 android layouts_viewsRoberson Alves
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_onRoberson Alves
 
Aula01 mobilidade android
Aula01 mobilidade androidAula01 mobilidade android
Aula01 mobilidade androidRoberson Alves
 

Mais de Roberson Alves (16)

Apresentação da Dissertação
Apresentação da DissertaçãoApresentação da Dissertação
Apresentação da Dissertação
 
Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connection
 
eduAula08 phonegap arquivos
eduAula08 phonegap arquivoseduAula08 phonegap arquivos
eduAula08 phonegap arquivos
 
Aula07 phonegap bussola_eventos
Aula07 phonegap bussola_eventosAula07 phonegap bussola_eventos
Aula07 phonegap bussola_eventos
 
Aula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometroAula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometro
 
Aula05 phonegap cadastro_contatos
Aula05 phonegap cadastro_contatosAula05 phonegap cadastro_contatos
Aula05 phonegap cadastro_contatos
 
Aula04 phonegap componentes
Aula04 phonegap componentesAula04 phonegap componentes
Aula04 phonegap componentes
 
Aula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapAula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gap
 
la 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapla 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gap
 
Aula08 android outros_recursos
Aula08 android outros_recursosAula08 android outros_recursos
Aula08 android outros_recursos
 
Aula06 android localizacao
Aula06 android localizacaoAula06 android localizacao
Aula06 android localizacao
 
Aula04 android intents
Aula04 android intentsAula04 android intents
Aula04 android intents
 
Aula03 android layouts_views
Aula03 android layouts_viewsAula03 android layouts_views
Aula03 android layouts_views
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_on
 
Aula01 mobilidade android
Aula01 mobilidade androidAula01 mobilidade android
Aula01 mobilidade android
 

Último

Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfFbioFerreira207918
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...SileideDaSilvaNascim
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptNathaliaFreitas32
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedJaquelineBertagliaCe
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)Centro Jacques Delors
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxMarcosLemes28
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeLEONIDES PEREIRA DE SOUZA
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfLidianeLill2
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfJuliana Barbosa
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...MariaCristinaSouzaLe1
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubeladrianaguedesbatista
 

Último (20)

Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdf
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidade
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 

Aula05 android persistencia

  • 1. PERSISTÊNCIA DE DADOS NO ANDROID “Muitas vezes, as pessoas não sabem o que elas querem até que você mostre a elas.” (Steve Jobs)
  • 2. CONTEÚDO •Internal Storage •Shared Preferences •SQLite Databases
  • 3. PERSISTÊNCIA DE DADOS • Existem 3 formas principais de armazenar dados no dispositivo – Arquivos comuns (formato texto ou binário) • Classes FileInputStream e FileOutputStream • Armazenados em /data/data/<pacote>/files – Arquivos de preferências • Classe SharedPreferences – Bancos de Dados usando SQLite • Classes SQLiteDatabase, SQLiteOpenHelper • Armazenados em /data/data/<pacote>/databases
  • 4. CLASSE ANDROID.OS.ENVIRONMENT MÉTODO FUNÇÃO static File getDataDirectory() Retorna o diretório de dados do Android. static File getDownloadCacheDirectory() Retorna o diretório onde o Android salva os downloads e cache. static File getExternalStorageDirectory() Retorna o diretório de armazenamento externo (p.ex. cartão de memória) static File getExternalStoragePublicDirect ory(tipo) Retorna o diretório público de armazenamento externo para um tipo de arquivo. Tipo pode ser: DIRECTORY_DCIM, DIRECTORY_DOWNLOADS, DIRECTORY_MOVIES, DIRECTORY_MUSIC, DIRECTORY_PICTURES, etc. static String getExternalStorageState() Retorna o estado do dispositivo de armazenamento externo principal. Retorno pode ser: MEDIA_MOUNTED (disponível para uso leitura e escrita), MEDIA_MOUNTED_READ_ONLY (disponível apenas para leitura), MEDIA_REMOVED (dispositivo não presente), MEDIA_SHARED (dispositivo presente, não montado e compartilhado via USB). Outros: MEDIA_UNMOUNTABLE, MEDIA_UNMOUNTED, MEDIA_BAD_REMOVAL, MEDIA_CHECKING static boolean isExternalStorageRemovable() Se o dispositivo externo de armazenamento é removível ou não.
  • 5. ARQUIVOS COMUNS • Métodos da classe Context FileInputStream openFileInput(String name) Abre um arquivo privado associado a aplicação para leitura. Argumento name não pode conter ‘/’. FileOutputStream openFileOutput(String name, int mode) Abre um arquivo privado associado a aplicação para escrita. Argumento mode pode ser Context.MODE_PRIVATE ou Context.MODE_APPEND. – FileInputStream: contém métodos para ler bytes – FileOutputStream: contém métodos para escrever bytes – InputStreamReader: pode ser construído a partir de um FileInputStream e contém métodos para ler caracteres – OutputStreamWriter: pode ser construído a partir de um FileOuputStream e contém métodos para escrever caracteres
  • 7. ARQUIVOS COMUNS – LOCALIZAÇÃO • Exemplo
  • 8. ANDROID.CONTENT.SHAREDPREFERENCES • Classe para armazenar preferências ou configurações da aplicação • É possível usar quantas quiser, desde que associadas a um nome de arquivo • Guarda informações na forma de pares: chave-valor • Para obter a instância desta classe associada ao nome de arquivo “preferencias”: SharedPreferences pref = Context.getSharedPreferences(“preferencias”, 0); • Se o arquivo ainda não existir será criado • Para editar usar a classe SharedPreferences.Editor SharedPreferences.Editor editor = prefs.edit();
  • 9. ANDROID.CONTENT.SHAREDPREFERENCES • Métodos boolean contains(String key) Retorna true caso a chave key exista. boolean getBoolean(String key, boolean) float getFloat(String key, float) int getInt(String key, int) long getLong(String key, long) String getString(String key, String) Retorna o valor de uma chave. O segundo parâmetro indica o valor default que deve ser retornado caso a chave não exista. Note que é necessário que o desenvolvedor saiba o tipo do dado armazenado na chave. Caso a chave exista mas o tipo seja diferente do especificado no método será lançado um ClassCastException. SharedPreferences.Editor Retorna um editor para as preferências que permite editar e salvar informações.
  • 10. ANDROID.CONTENT.SHAREDPREFERENCES.E DITOR • Usada para editar as preferências boolean commit() Salva as preferências no objeto SharedPreferences associado e em disco. Operação síncrona, ou seja, só retorna após ter salvo em disco retornando true em caso de sucesso, ou false senão. void apply() Aplica os novos valores das preferências ao objeto em memória e retorna. O armazenamento em disco será feito de forma assíncrona, ou seja, não é possível saber se houve algum error durante o armazenamento. clear() Remove todos os valores de preferências do objeto. putBoolean(String key, boolean) putFloat(String key, float) putInt(String key, int) putLong(String key, long) putString(String key, String) Adiciona ou altera o valor de uma chave. O nome do método e o segundo parâmetro indicam o tipo do valor da chave. remove(String key) Remove a chave definida por key e consequentemente o seu valor.
  • 13. BANCO DE DADOS - SQLITE • Consiste em tabelas onde dados podem inseridos, modificados ou excluídos • O Android suporta um o modelo lógico relacional para armazenamento de dados • No Android, é utilizado o SQLite para gerenciar as tabelas de bancos de dados – www.sqlite.org – Is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world.
  • 14. BANCO DE DADOS - SQLITE • SQLite implementa a maior parte do padrão SQL-92; • Suporte parcial para triggers e queries complexas; • SQLITE não implementa integridade referencial seguindo o tradicional modelo de restrições com chave estrangeira.
  • 15. BANCO DE DADOS - SQLITE • API do Android (executar SQL) – Adotado aqui pois permite criar o BD pela aplicação • Cliente gráfico do SQLite – SQLite Expert Personal (gratuito) • http://www.sqliteexpert.com/index.html • Usando SQL via linha de comando – Programa na pasta do SDK do Android • <pasta_android>android-sdk-windowstoolssqlite3.exe • Nos 2 últimos, após criar, é preciso mover o arquivo para a pasta /data/data/<pacote>/databases do emulador – No eclipse (com emulador aberto): • Window > Show view > Other... > FileExplorer
  • 16. ANDROID.DATABASE.SQLITE.SQLITEOPENHELPER • Auxilia abertura e criação de um banco de dados SQLiteOpenHelper(Context, String name, SQLiteDatabase.CursorFactory, int version) Cria um objeto para auxiliar no gerenciamento da base de dados. SQLiteDatabase getReadableDatabase() Cria ou abre um banco de dados apenas para leitura. SQLiteDatabase getWritableDatabase() Cria ou abre um banco de dados para leitura e escrita. void onCreate(SQLiteDatabase db) Chamado quando o banco de dados precisa ser criado, ou seja, não existe. void onOpen(SQLiteDatabase db) Chamado quando o banco de dados é aberto. void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) Chamado quando a versão do banco de dados sendo aberto é diferente da versão existente.
  • 17. ANDROID.DATABASE.SQLITE.SQLITEDATABASE • Representa o banco de dados e executa operações de consulta, inclusão, alteração e exclusão de registros static SQLiteDatabase Abre banco de dados de acordo com os flags: openDatabase(String path, OPEN_READWRITE, OPEN_READONLY, CursorFactory factory, flags) CREATE_IF_NECESSARY, NO_LOCALIZED_COLLATORS. static SQLiteDatabase openOrCreateDatabase(String path, CursorFactory factory) static SQLiteDatabase openOrCreateDatabase(File file, CursorFactory factory) Abre ou cria banco de dados. Equivalente a usar openDatabase(…) com flags = CREATE_IF_NECESSARY boolean isOpen() Verifica se o banco de dados está aberto. void close() Fecha o banco de dados. void execSQL(String sql) Executa script SQL que não seja SELECT. Exemplo: CREATE TABLE, INSERT, UPDATE, etc.
  • 18. ANDROID.DATABASE.SQLITE.SQLITEDATABASE Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) Cursor query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit) Cursor query(boolean distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, String limit) Mostra e executa um comando SQL. long insert(table, null, ContentValues values) Insere um registro e retorna o id. int update(table, ContentValues values, whereClause, whereArgs) Altera registro(s) e retorna quantidade de linhas modificadas. int delete(table, whereClause, whereArgs) Deleta registro(s) e retorna quantidade de linhas modificadas.
  • 19. EXEMPLO 01 – CRIANDO/CONECTANDO AO BANCO DE DADOS Classe estende SQLiteOpenHelper e permite gerenciar SQLiteDatabase’s.
  • 20. EXEMPLO 01 – CRIANDO/CONECTANDO AO BANCO DE DADOS Implementação do método onCreate() do banco de dados. Implementação do método onUpgrade() do banco de dados.
  • 21. EXEMPLO 01 – CRIANDO/CONECTANDO AO BANCO DE DADOS Recuperando uma instância do banco de dados para escrita.
  • 23. ANDROID.CONTENT.CONTENTVALUES • ContentValues – Usado para armazenar o conteúdo de um registro para uma operação – Equivalente a um HashMap • put(String key, valor)
  • 24. CURSORES • Permite diversas operações sobre um conjunto de dados retornados – Posicionamento (isFirst(), isLast(), isBeforeFirst(), isAfterLast()); – Navegação(moveToFirst(), moveToLast(), moveToNext(), moveToPrevious(), move(n)); – Extração de campos(getInt, getString, getFloat, getBlob, getDate, etc.); – Inspeção de esquema(getColumnName, getColumnNames, getColumnIndex, getColumnCount, getCount).
  • 25. CURSORES • Cursor –Implementado por ANDROID.DATABASE.CURSOR –Equivalente a um ResultSet no JDBC –Lista de resultados de uma consulta no banco
  • 26. EXEMPLO 02 – MANIPULAÇÃO DA BASE DE DADOS – CURSORES
  • 27. EXEMPLO 03 – MANIPULAÇÃO DA BASE DE DADOS – INSERT
  • 28. EXEMPLO 04 – MANIPULAÇÃO DA BASE DE DADOS – UPDATE
  • 29. EXEMPLO 05 – MANIPULAÇÃO DA BASE DE DADOS – DELETE
  • 30. SQLITE DATATYPES • Suportados na versão 3 – NULL. The value is a NULL value. – INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value. – REAL. The value is a floating point value, stored as an 8- byte IEEE floating point number. – TEXT. The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16LE). – BLOB. The value is a blob of data, stored exactly as it was input.
  • 31. SQLITE TRASACTIONS • Controle transacional é desejável para garantir a consistência ou evitar perdas de dados; • Normalmente uma transação segue a premissa: “Sucesso completo ou falha total!”; • O Android/SQLite possuem suporte para controle transacional.
  • 32. SQLITE TRASACTIONS - EXEMPLO Caso não seja realizado um setTransactionSuccessful() = commit, será realizado automaticamente um rollback.
  • 33. REFERÊNCIAS • Data Storage. 2012. Disponível em: < http://developer.android.com/guide/topics/data/da ta-storage.html >. Acesso em: 20 ago. 2012. • LECHETA, Ricardo R. Google android: aprenda a criar aplicações para dispositivos móveis com o android SDK. 2. ed., rev. e ampl. São Paulo: Novatec, 2010. 608 p. ISBN 9788575222447. • MURPHY, Mark L. Beginning android. New York, USA: Apress, 2009. xxii, 361 p. ISBN 9781430224198.