Sobes.tech
Middle

Milyen alternatívákat javasolna a SharedPreferences helyett az adatok tárolására Androidon?

sobes.tech MI

Válasz az MI-től

  • Szoba Megőrzési Könyvtár: Absztrakció a SQLite felett. Típusos hozzáférést biztosít az adatokhoz DAO (Data Access Objects) segítségével, támogatja a Coroutines-t és Flow-t. Ideális strukturált és relációs adatokhoz.

    // Példa lekérdezés 
    @Dao
    interface UserDao {
        @Query("SELECT * FROM users WHERE id = :userId")
        suspend fun getUserById(userId: Int): User?
    }
    
  • DataStore: Modernebb alternatíva a Google SharedPreferences-hez képest. Megoldja a SharedPreferences szálbiztonsági és UI-blokkolási problémáit. Két megvalósítás létezik: Preferences DataStore (hasonló a SharedPreferences-hez) és Proto DataStore (Protocol Buffers-szel típusos adatokhoz). Kotlin Coroutines és Flow használatával.

    // Példa Preferences DataStore olvasására
    val exampleCounterFlow: Flow<Int> = context.dataStore.data
        .map { preferences ->
            preferences[EXAMPLE_COUNTER] ?: 0
        }
    
  • Belső/Külső tárhely (fájlok): Nagy mennyiségű strukturálatlan adat tárolására, például médiafájlok vagy egyedi formátumok esetén. Kifejezett hozzáférés- és engedélykezelést igényel.

    // Fájl írása belső tárhelyen
    String filename = "myapplicationdata";
    String fileContents = "Hello world!";
    try (FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE)) {
        fos.write(fileContents.getBytes());
    } catch (IOException e) {
        e.printStackTrace();
    }
    
  • SQLiteDatabase: Alacsony szintű hozzáférés az beépített SQLite adatbázishoz. SQL lekérdezéseket kell írni és az adatbázist kézzel kezelni (nyitás, zárás, verziókezelés). A Room a legtöbb esetben ajánlott alternatíva.

    -- SQL lekérdezés példa
    SELECT column1, column2 FROM table_name WHERE condition;
    
  • Külső felhőszolgáltatások: Firebase Realtime Database, Firestore. Az adatok szinkronizálására eszközök között, biztonsági mentések és közös hozzáférés céljából. Internetkapcsolat és konfliktuskezelés szükséges.

Az alternatíva kiválasztása az adatok típusától, mennyiségétől, szerkezetétől, szinkronizálási szükséglettől és teljesítménykövetelményektől függ. Kis kulcs-érték párokhoz a DataStore ajánlott. Strukturált adatokhoz — Room. Nagy, strukturálatlan adatokhoz — fájlrendszer.