Junior
Koje vrste skladišta podataka postoje u Android aplikacijama?
sobes.tech АИ
Одговор од АИ
-
Внутрашње складиште (Internal Storage):
- Доступно само за апликацију која је креирала датотеку.
- Датотеке се бришу приликом деинсталације апликације.
- Погодно за чување поверљивих података апликације.
-
Спољашње складиште (External Storage):
- Доступно за све апликације (после захтева за дозволе).
- Датотеке остају чак и након деинсталације апликације.
- Погодно за чување заједничких података као што су фотографије или музика.
-
Заједничке поставке (Shared Preferences):
- Чува мала количина података у формату кључ-вредност.
- Користи се за чување подешавања апликације или корисничких преференција.
- Податке чува у XML датотеци.
-
SQLite базе података:
- Релациона база података.
- Погодна за чување структурираних података.
- Омогућава коришћење SQL упита за манипулацију подацима.
-
Content Providers:
- Обезбеђују стандардизован интерфејс за приступ подацима између апликација.
- Користе се за размену података као што су контакти или календар.
- Могу се користити за приступ сопственим подацима апликације из других компоненти.
-
Jetpack DataStore:
- Заменује заједничке поставке.
- Обезбеђује асинхроно токовно API за чување података.
- Подржава типизацију података и обраду грешака.
Ево примера коришћења заједничких поставки:
// Добијање објекта SharedPreferences
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
// Сачувај вредност
putBoolean("is_first_run", false)
apply() // Асимптонско примену измена
}
// Читање вредности
val isFirstRun = sharedPref.getBoolean("is_first_run", true)
Ево примера коришћења SQLite:
// Креирање базе података и табеле
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) {
// Логика ажурирања базе података
}
}
// Уметање података
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase
val values = ContentValues().apply {
put(DBHelper.COLUMN_NAME, "Пример имена")
}
val newRowId = db.insert(DBHelper.TABLE_NAME, null, values)