Persistencia de dados em aplicações Android

6,231 views
6,090 views

Published on

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.

Published in: Technology

Persistencia de dados em aplicações Android

  1. 1. Persistência de dados em aplicações Android @netomarin @Globalcodesábado, 26 de novembro de 2011
  2. 2. Vamos falar de... Shared Preferences SQLite Content Providerssábado, 26 de novembro de 2011 BackupManager
  3. 3. SharedPreferences Framework para persistir pares de chave-valor de dados primitivos.sábado, 26 de novembro de 2011
  4. 4. Onde e para o que usar? Preferências Valores padrãosábado, 26 de novembro de 2011
  5. 5. Lendo preferências... //default da aplicação Context c = getApplicationContext(); SharedPreferences defaultPrefs = PreferenceManager. getDefaultSharedPreferences(c); //Obtendo um SharedPreferences específico SharedPreferences prefs = getSharedPreferences(“SETTINGS”, MODE_PRIVATE); //Lendo valores primitivos String email = prefs.getString(“email”, “netomarin@gmail.com”); 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.htmlsábado, 26 de novembro de 2011
  6. 6. Gravando preferências... //Obtendo o SharedPreferences.Editor SharedPreferences prefs = getSharedPreferences(“SETTINGS”, MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); //atribuindo valores editor.putString(“email”, “netomarin@globalcode.com.br”); 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.htmlsábado, 26 de novembro de 2011
  7. 7. Tem banco de dados ?sábado, 26 de novembro de 2011
  8. 8. SQLitePersistência combanco de dados relacional para Android !sábado, 26 de novembro de 2011
  9. 9. Saudades do SQL ? Criar tabelas Inserir dados Consultar Apagar e tudo mais que você sempre sentiu falta...sábado, 26 de novembro de 2011
  10. 10. Criando e definindo a base de dados... //criar classe que extende SQLiteOpenHelper public class MeuBancoDeDados extends SQLiteOpenHelper { /** * implementar métodos: * onCreate * onUpgrade * * E opcionalmente onOpen */ }sábado, 26 de novembro de 2011
  11. 11. Inserindo dados... //Obtendo instância do banco de dados DatabaseHelper db = new DatabaseHelper(context); SQLiteDatabase litedb = db.getWritableDatabase(); //Criando objeto para inserir no SQLite ContentValues 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
  12. 12. Obtendo dados.... //Obtendo instância do banco de dados DatabaseHelper 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
  13. 13. Criar tabela? Na mão ? INSERT ?!sábado, 26 de novembro de 2011
  14. 14. SQLite Database Browsersábado, 26 de novembro de 2011
  15. 15. 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
  16. 16. ContentProvider Única forma de compartilhar dados entre diferentes aplicações.sábado, 26 de novembro de 2011
  17. 17. Como funciona ?sábado, 26 de novembro de 2011
  18. 18. Providers do sistema Contatos Fotos Calendário (disponível a partir do ICS)sábado, 26 de novembro de 2011
  19. 19. Lendo os contatos //Obtendo os contatos Cursor c = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); //Navegando pelos contatos while (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.htmlsábado, 26 de novembro de 2011
  20. 20. Crie o seu ContentProvidersábado, 26 de novembro de 2011
  21. 21. E como eu acesso o meu banco pra sincronizar?sábado, 26 de novembro de 2011
  22. 22. 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
  23. 23. Obter uma API Key: http://code.google.com/android/backup/signup.htmlsábado, 26 de novembro de 2011
  24. 24. Extender BackupAgentHelper Deve ter pelo menos um backup helpers: 1. SharedPreferencesBackupHelper Backup de SharedPreferences! 2. FileBackupHelper Backup de arquivos do internal storage.sábado, 26 de novembro de 2011
  25. 25. Fazer o backup... Notificar o BackupManager com a chamada do método dataChanged()sábado, 26 de novembro de 2011
  26. 26. 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
  27. 27. WTF... Já acabou?sábado, 26 de novembro de 2011
  28. 28. Minicurso Gratuito Persistência de dados em aplicações Android 15 / dezembro -19h às 22h Presencial e Online bit.ly/tI8bbNsábado, 26 de novembro de 2011
  29. 29. sábado, 26 de novembro de 2011
  30. 30. Espere mais um pouco... Temos mais 3 novidades para vocês!sábado, 26 de novembro de 2011
  31. 31. TRÊS novos TREINAMENTOS ANDROID no portifólio da GLOBALCODE !sábado, 26 de novembro de 2011
  32. 32. Introdução à plataforma Android. http://bit.ly/vP5pjOsábado, 26 de novembro de 2011
  33. 33. Programando para Android. http://bit.ly/gc-androidsábado, 26 de novembro de 2011
  34. 34. Criando Widgets e Notificações C2DM http://bit.ly/vxKhXzsábado, 26 de novembro de 2011
  35. 35. Criando aplicações Android com GPS, mapas e sensores. http://bit.ly/ssexRvsábado, 26 de novembro de 2011
  36. 36. Pra saber mais: http://blog.globalcode.com.br/ 2011/11/novidades-android-na- globalcode.htmlsábado, 26 de novembro de 2011
  37. 37. @netomarin slideshare.net/netomarinsábado, 26 de novembro de 2011

×