Upload
antonio-marin-neto
View
5.598
Download
2
Embed Size (px)
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.
Citation preview
Persistência de dados em aplicações Android
@netomarin@Globalcode
sábado, 26 de novembro de 2011
Shared Preferences
Content Providers
SQLite
Vamos falar de...
BackupManagersábado, 26 de novembro de 2011
SharedPreferences
Framework para persistir pares de
chave-valor de dados primitivos.
sábado, 26 de novembro de 2011
Onde e para o que usar?
Preferências Valores padrãosábado, 26 de novembro de 2011
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
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
Tem banco de dados ?
sábado, 26 de novembro de 2011
SQLite
Persistência com
banco de dados relacional para
Android !
sábado, 26 de novembro de 2011
Saudades do SQL ?
Criar tabelasInserir dados
ConsultarApagar
e tudo mais que você sempre sentiu falta...
sábado, 26 de novembro de 2011
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
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
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
Criar tabela?
Na mão ?
INSERT ?!
sábado, 26 de novembro de 2011
SQLite Database Browser
sábado, 26 de novembro de 2011
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
ContentProvider
Única forma de
compartilhar
dados entre diferentes
aplicações.
sábado, 26 de novembro de 2011
Como funciona ?
sábado, 26 de novembro de 2011
Providers do sistema
Contatos
Fotos
Calendário (disponível a partir do ICS)
sábado, 26 de novembro de 2011
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
Crie o seu ContentProvider
sábado, 26 de novembro de 2011
E como eu acesso o meu
banco pra sincronizar?
sábado, 26 de novembro de 2011
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
Obter uma API Key:http://code.google.com/android/backup/signup.html
sábado, 26 de novembro de 2011
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
Fazer o backup...
Notificar o BackupManager com a chamada do método dataChanged()
sábado, 26 de novembro de 2011
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
WTF...
Já acabou?
sábado, 26 de novembro de 2011
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
sábado, 26 de novembro de 2011
Espere mais um pouco...
Temos mais 3 novidades para vocês!
sábado, 26 de novembro de 2011
TRÊS novos TREINAMENTOS
ANDROID no portifólio da
GLOBALCODE !
sábado, 26 de novembro de 2011
Introdução à plataforma Android.http://bit.ly/vP5pjO
sábado, 26 de novembro de 2011
Programando para Android.
http://bit.ly/gc-android
sábado, 26 de novembro de 2011
Criando Widgets e Notificações C2DMhttp://bit.ly/vxKhXz
sábado, 26 de novembro de 2011
Criando aplicações Android com GPS, mapas e sensores.http://bit.ly/ssexRv
sábado, 26 de novembro de 2011
Pra saber mais:http://blog.globalcode.com.br/2011/11/novidades-android-na-
globalcode.html
sábado, 26 de novembro de 2011
@netomarinslideshare.net/netomarin
sábado, 26 de novembro de 2011