Junior
Milyen típusú adattárolások léteznek Android alkalmazásokban?
sobes.tech MI
Válasz az MI-től
-
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.
-
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.
-
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.
-
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.
-
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.
-
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)