Sobes.tech
Junior

Milyen típusú adattárolások léteznek Android alkalmazásokban?

sobes.tech MI

Válasz az MI-től

  1. Belső tárhely:

    • Csak az alkalmazás érheti el, amely létrehozta a fájlt.
    • A fájlok az alkalmazás eltávolításakor törlődnek.
    • Alkalmas az alkalmazás bizalmas adatainak tárolására.
  2. Külső tárhely:

    • Minden alkalmazás számára elérhető (engedélyek kérését követően).
    • A fájlok akkor is megmaradnak, ha az alkalmazást eltávolítják.
    • Alkalmas közös adatok, például fényképek vagy zene tárolására.
  3. Megosztott preferenciák:

    • Kis adatmennyiséget tárol kulcs-érték formátumban.
    • Az alkalmazás beállításainak vagy felhasználói preferenciáinak mentésére használják.
    • Az adatok XML fájlban tárolódnak.
  4. SQLite adatbázisok:

    • Relációs adatbázis.
    • Alkalmas strukturált adatok tárolására.
    • SQL lekérdezéseket lehet használni az adatok manipulálására.
  5. Tartalom szolgáltatók:

    • Szabványosított interfészt biztosítanak az adatokhoz való hozzáféréshez alkalmazások között.
    • Adatok cseréjére, például kapcsolatok vagy naptár esetén használják.
    • Más komponensekből is hozzáférhetnek az alkalmazás saját adataihoz.
  6. Jetpack DataStore:

    • A Megosztott preferenciák helyett.
    • Aszinkron API-t biztosít az adatok tárolásához.
    • Támogatja az adattípusokat és a hibakezelést.

Íme egy példa a Megosztott preferenciák használatára:

// A SharedPreferences objektum elérése
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    // Érték mentése
    putBoolean("is_first_run", false)
    apply() // Az változtatások aszinkron alkalmazása
}

// Az érték olvasása
val isFirstRun = sharedPref.getBoolean("is_first_run", true)

Íme egy példa SQLite használatára:

// Adatbázis és tábla létrehozása
class DBHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {

    companion object {
        const val DATABASE_VERSION = 1
        const val DATABASE_NAME = "MyDatabase.db"
        const val TABLE_NAME = "my_table"
        const val COLUMN_ID = "_id"
        const val COLUMN_NAME = "name"
    }

    override fun onCreate(db: SQLiteDatabase) {
        val createTable = "CREATE TABLE $TABLE_NAME (" +
                "$COLUMN_ID INTEGER PRIMARY KEY," +
                "$COLUMN_NAME TEXT)"
        db.execSQL(createTable)
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        // Az adatbázis frissítésének logikája
    }
}

// Adatok beszúrása
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase

val values = ContentValues().apply {
    put(DBHelper.COLUMN_NAME, "Példa név")
}

val newRowId = db.insert(DBHelper.TABLE_NAME, null, values)