Junior
Ce tipuri de stocare a datelor există în aplicațiile Android?
sobes.tech AI
Răspuns de la AI
-
Stocare internă:
- Disponibilă doar pentru aplicația care a creat fișierul.
- Fișierele sunt șterse la eliminarea aplicației.
- Potrivit pentru stocarea datelor confidențiale ale aplicației.
-
Stocare externă:
- Disponibilă pentru toate aplicațiile (după solicitarea permisiunilor).
- Fișierele rămân chiar și după eliminarea aplicației.
- Potrivit pentru stocarea datelor comune, cum ar fi fotografii sau muzică.
-
Preferințe partajate:
- Stochează volume mici de date în format cheie-valoare.
- Folosit pentru salvarea setărilor aplicației sau preferințelor utilizatorului.
- Datele sunt stocate într-un fișier XML.
-
Baze de date SQLite:
- Bază de date relațională.
- Potrivit pentru stocarea datelor structurate.
- Permite utilizarea interogărilor SQL pentru manipularea datelor.
-
Proveditori de conținut:
- Oferă o interfață standardizată pentru accesul la date între aplicații.
- Folosit pentru schimbul de date, cum ar fi contacte sau calendar.
- Pot fi folosiți pentru accesul la datele proprii ale aplicației din alte componente.
-
Jetpack DataStore:
- Înlocuiește preferințele partajate.
- Oferă o API asincronă pentru stocarea datelor.
- Suportă tipizarea datelor și gestionarea erorilor.
Iată un exemplu de utilizare a preferințelor partajate:
// Obțineți obiectul SharedPreferences
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
// Salvăm valoarea
putBoolean("is_first_run", false)
apply() // Aplicăm modificările asincron
}
// Citim valoarea
val isFirstRun = sharedPref.getBoolean("is_first_run", true)
Iată un exemplu de utilizare a SQLite:
// Crearea bazei de date și a tabelului
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) {
// Logica de actualizare a bazei de date
}
}
// Inserarea datelor
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase
val values = ContentValues().apply {
put(DBHelper.COLUMN_NAME, "Exemplu nume")
}
val newRowId = db.insert(DBHelper.TABLE_NAME, null, values)