Junior
რა ტიპის მონაცემთა შენახვის სისტემები არსებობს Android აპლიკაციებში?
sobes.tech AI
პასუხი AI-სგან
-
Ішкі сақтау (Internal Storage):
- Тек қана файлды жасаған қолданбаға қол жетімді.
- Файлдар қолданбаны жойғанда жойылады.
- Қолданбаның құпия деректерін сақтау үшін жарамды.
-
Сыртқы сақтау (External Storage):
- Барлық қолданбаларға қол жетімді (рұқсат сұрағаннан кейін).
- Файлдар қолданбаны жойғаннан кейін де қалады.
- Жалпы деректерді сақтау үшін жарамды, мысалы фотосуреттер немесе музыка.
-
Бөліскен параметрлер (Shared Preferences):
- Кіші көлемдегі деректерді кілт-мағына форматында сақтайды.
- Қолданбаның баптаулары немесе пайдаланушының қалауларын сақтау үшін пайдаланылады.
- Деректер XML файлына сақталады.
-
SQLite дерекқорлары:
- Қатысты дерекқор.
- Құрылымдалған деректерді сақтау үшін жарамды.
- Деректермен жұмыс істеу үшін SQL сұрауларын қолдануға мүмкіндік береді.
-
Content Providers:
- Қолданбалар арасында деректерге қол жеткізу үшін стандартталған интерфейс.
- Байланыстар немесе күнтізбе сияқты деректермен алмасу үшін пайдаланылады.
- Басқа компоненттерден қолданбаның өз деректеріне қол жеткізу үшін қолданылуы мүмкін.
-
Jetpack DataStore:
- Shared Preferences-тің орнына пайдаланылады.
- Деректерді сақтау үшін асинхронды ағынды API ұсынады.
- Деректердің типін және қателерді өңдеуді қолдайды.
Міне, Shared Preferences қолданудың мысалы:
// 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)