Sobes.tech
Junior

Que métodos de armazenamento de dados conhece?

sobes.tech IA

Resposta da IA

  1. SharedPreferences: Para armazenar pares chave-valor simples (tipos primitivos). Acesso rápido, mas não adequado para grandes volumes de dados.

  2. Memória interna (Internal Storage): Sistema de ficheiros acessível apenas à aplicação. Os dados são eliminados ao desinstalar. Adequado para dados privados.

    // Gravar ficheiro
    applicationContext.openFileOutput("my_file.txt", Context.MODE_PRIVATE).use {
        it.write("Some data".toByteArray())
    }
    
    // Ler ficheiro
    applicationContext.openFileInput("my_file.txt").bufferedReader().useLines { lines ->
        lines.forEach { println(it) }
    }
    
  3. Memória externa (External Storage): Sistema de ficheiros acessível a outras aplicações (com permissões) e ao utilizador. Os dados permanecem após desinstalar. Requer atenção às permissões no Android 10+. Adequado para dados não sensíveis.

  4. Bases de dados SQLite: Base de dados relacional. Adequado para dados estruturados que requerem consultas complexas. Requer mais código para implementar. Room Persistence Library é o ORM recomendado.

    -- Exemplo de consulta SQL
    SELECT * FROM users WHERE age > 30
    
  5. Content Providers: Fornecem acesso estruturado a conjuntos de dados partilhados. Podem ser criados para os seus próprios dados ou para aceder a dados de outras aplicações (por exemplo, contactos).

  6. DataStore: Solução moderna e assíncrona para armazenar dados, substituindo SharedPreferences e parte da funcionalidade do SQLite. Existem dois tipos: Preferences DataStore (para pares chave-valor) e Proto DataStore (para objetos tipados com Protobuf).

    // Exemplo de Preferences DataStore
    val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
    
    suspend fun saveSetting(context: Context, key: String, value: Boolean) {
        context.dataStore.edit { settings ->
            settings[booleanPreferencesKey(key)] = value
        }
    }
    
  7. Jetpack DataStore (versões antigas) / DataSync / outras soluções em nuvem: Para sincronizar dados entre dispositivos do utilizador e armazenar backups. Requer integração com serviços em nuvem.

A escolha do método depende do tipo de dados, do seu volume, da necessidade de acesso partilhado, de questões de segurança e de requisitos de desempenho.