persistencia de dados em aplicações android
DESCRIPTION
A persistência de dados em qualquer tipo de aplicação sempre é um assunto muito importante, principalmente em aplicações móveis onde diversos fatores como desempenho e espaço disponível.Na plataforma Android temos várias formas de persistir essas informações, e cada uma dessas formas se encaixa melhor em cada tipo de dado que você deseja persistir.TRANSCRIPT
![Page 1: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/1.jpg)
Persistência de dados em aplicações Android
@netomarin@Globalcode
sábado, 26 de novembro de 2011
![Page 2: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/2.jpg)
Shared Preferences
Content Providers
SQLite
Vamos falar de...
BackupManagersábado, 26 de novembro de 2011
![Page 3: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/3.jpg)
SharedPreferences
Framework para persistir pares de
chave-valor de dados primitivos.
sábado, 26 de novembro de 2011
![Page 4: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/4.jpg)
Onde e para o que usar?
Preferências Valores padrãosábado, 26 de novembro de 2011
![Page 5: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/5.jpg)
Lendo preferências...
//default da aplicaçãoContext c = getApplicationContext();SharedPreferences defaultPrefs = PreferenceManager.
getDefaultSharedPreferences(c);
//Obtendo um SharedPreferences específicoSharedPreferences prefs = getSharedPreferences(“SETTINGS”,
MODE_PRIVATE);
//Lendo valores primitivosString email = prefs.getString(“email”, “[email protected]”);boolean logado = prefs.getBoolean(“logado”, false);float volume = prefs.getFloat(“volume”, 1.0f);int idUsuario = prefs.getInt(“idUsuario”, -1);long timestamp = prefs.getLong(“timestamp”, 0);
http://developer.android.com/reference/android/content/SharedPreferences.html
sábado, 26 de novembro de 2011
![Page 6: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/6.jpg)
Gravando preferências...
//Obtendo o SharedPreferences.EditorSharedPreferences prefs = getSharedPreferences(“SETTINGS”,MODE_PRIVATE);SharedPreferences.Editor editor = prefs.edit();
//atribuindo valoreseditor.putString(“email”, “[email protected]”);editor.putBoolean(“logado”, true);editor.putFloat(“volume”, 4.0f);editor.putInt(“idUsuario”, 779988);editor.putLong(“timestamp”, System.currentTimeMillis());
//COMMITANDO !! ** OBRIGATÓRIO **editor.commit();
http://developer.android.com/reference/android/content/SharedPreferences.Editor.html
sábado, 26 de novembro de 2011
![Page 7: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/7.jpg)
Tem banco de dados ?
sábado, 26 de novembro de 2011
![Page 8: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/8.jpg)
SQLite
Persistência com
banco de dados relacional para
Android !
sábado, 26 de novembro de 2011
![Page 9: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/9.jpg)
Saudades do SQL ?
Criar tabelasInserir dados
ConsultarApagar
e tudo mais que você sempre sentiu falta...
sábado, 26 de novembro de 2011
![Page 10: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/10.jpg)
Criando e definindo abase de dados...
//criar classe que extende SQLiteOpenHelperpublic class MeuBancoDeDados extends SQLiteOpenHelper { /** * implementar métodos: * onCreate * onUpgrade * * E opcionalmente onOpen */}
sábado, 26 de novembro de 2011
![Page 11: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/11.jpg)
Inserindo dados...
//Obtendo instância do banco de dadosDatabaseHelper db = new DatabaseHelper(context); SQLiteDatabase litedb = db.getWritableDatabase();
//Criando objeto para inserir no SQLiteContentValues v = new ContentValues(); v.put(“categoria”, categoria); v.put(“resumo”, resumo); v.put(“descricao”, descricao);litedb.insert(“todo”, null, v);
sábado, 26 de novembro de 2011
![Page 12: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/12.jpg)
Obtendo dados....
//Obtendo instância do banco de dadosDatabaseHelper db = new DatabaseHelper(context); SQLiteDatabase litedb = db.getReadableDatabase();
//Efetuando select :-)String sql = “SELECT * FROM todo”; Cursor c = litedb.rawQuery(sql, null); c.moveToFirst();while(c.moveToNext()) { c.getString(0); //categoria c.getString(1); //resumo c.getString(2); //descricao}
sábado, 26 de novembro de 2011
![Page 13: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/13.jpg)
Criar tabela?
Na mão ?
INSERT ?!
sábado, 26 de novembro de 2011
![Page 14: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/14.jpg)
SQLite Database Browser
sábado, 26 de novembro de 2011
![Page 15: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/15.jpg)
Dados embarcados...
Prós:Possível pré-carregar a aplicação com dados.Melhoria no desempenho de criação.Edição gráfica do banco de dados.
Contra:Aumenta o tamanho da aplicação.Dados podem ser extraídos do seu APK.
sábado, 26 de novembro de 2011
![Page 16: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/16.jpg)
ContentProvider
Única forma de
compartilhar
dados entre diferentes
aplicações.
sábado, 26 de novembro de 2011
![Page 17: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/17.jpg)
Como funciona ?
sábado, 26 de novembro de 2011
![Page 18: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/18.jpg)
Providers do sistema
Contatos
Fotos
Calendário (disponível a partir do ICS)
sábado, 26 de novembro de 2011
![Page 19: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/19.jpg)
Lendo os contatos
//Obtendo os contatosCursor c = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
//Navegando pelos contatoswhile (contacts.moveToNext()) { // Id do contato String contactID = contacts.getString(contacts. getColumnIndex(ContactsContract.Contacts._ID));
// Nome do contato (FirstName + LastName) String contactName = contacts.getString(contacts. getColumnIndex(ContactsContract.Data.DISPLAY_NAME));}
http://developer.android.com/guide/topics/providers/content-providers.html
sábado, 26 de novembro de 2011
![Page 20: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/20.jpg)
Crie o seu ContentProvider
sábado, 26 de novembro de 2011
![Page 21: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/21.jpg)
E como eu acesso o meu
banco pra sincronizar?
sábado, 26 de novembro de 2011
![Page 22: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/22.jpg)
BackupManager
Backup na cloud de dados
salvos em preferências ou
configurações.
Também de arquivos pequenos.
sábado, 26 de novembro de 2011
![Page 23: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/23.jpg)
Obter uma API Key:http://code.google.com/android/backup/signup.html
sábado, 26 de novembro de 2011
![Page 24: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/24.jpg)
Extender BackupAgentHelper
Deve ter pelo menos um backup helpers:
1. SharedPreferencesBackupHelperBackup de SharedPreferences!
2. FileBackupHelperBackup de arquivos do internal storage.
sábado, 26 de novembro de 2011
![Page 25: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/25.jpg)
Fazer o backup...
Notificar o BackupManager com a chamada do método dataChanged()
sábado, 26 de novembro de 2011
![Page 26: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/26.jpg)
AndroidManifest.xml
<application android:label="MyApplication" android:backupAgent="MyBackupAgent" android:allowBackup="true" > ... <meta-data android:name="com.google.android.backup.api_key" android:value="SUA_API_KEY" /></application>
sábado, 26 de novembro de 2011
![Page 27: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/27.jpg)
WTF...
Já acabou?
sábado, 26 de novembro de 2011
![Page 28: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/28.jpg)
Minicurso GratuitoPersistência de dados em
aplicações Android
15 / dezembro -19h às 22hPresencial e Online
bit.ly/tI8bbN sábado, 26 de novembro de 2011
![Page 29: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/29.jpg)
sábado, 26 de novembro de 2011
![Page 30: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/30.jpg)
Espere mais um pouco...
Temos mais 3 novidades para vocês!
sábado, 26 de novembro de 2011
![Page 31: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/31.jpg)
TRÊS novos TREINAMENTOS
ANDROID no portifólio da
GLOBALCODE !
sábado, 26 de novembro de 2011
![Page 32: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/32.jpg)
Introdução à plataforma Android.http://bit.ly/vP5pjO
sábado, 26 de novembro de 2011
![Page 33: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/33.jpg)
Programando para Android.
http://bit.ly/gc-android
sábado, 26 de novembro de 2011
![Page 34: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/34.jpg)
Criando Widgets e Notificações C2DMhttp://bit.ly/vxKhXz
sábado, 26 de novembro de 2011
![Page 35: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/35.jpg)
Criando aplicações Android com GPS, mapas e sensores.http://bit.ly/ssexRv
sábado, 26 de novembro de 2011
![Page 36: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/36.jpg)
Pra saber mais:http://blog.globalcode.com.br/2011/11/novidades-android-na-
globalcode.html
sábado, 26 de novembro de 2011
![Page 37: Persistencia de dados em aplicações Android](https://reader033.vdocuments.pub/reader033/viewer/2022052321/549384cbac7959342e8b48b7/html5/thumbnails/37.jpg)
@netomarinslideshare.net/netomarin
sábado, 26 de novembro de 2011