Sobes.tech
Junior

რა ტიპის მონაცემთა შენახვის სისტემები არსებობს Android აპლიკაციებში?

sobes.tech AI

პასუხი AI-სგან

  1. Ішкі сақтау (Internal Storage):

    • Тек қана файлды жасаған қолданбаға қол жетімді.
    • Файлдар қолданбаны жойғанда жойылады.
    • Қолданбаның құпия деректерін сақтау үшін жарамды.
  2. Сыртқы сақтау (External Storage):

    • Барлық қолданбаларға қол жетімді (рұқсат сұрағаннан кейін).
    • Файлдар қолданбаны жойғаннан кейін де қалады.
    • Жалпы деректерді сақтау үшін жарамды, мысалы фотосуреттер немесе музыка.
  3. Бөліскен параметрлер (Shared Preferences):

    • Кіші көлемдегі деректерді кілт-мағына форматында сақтайды.
    • Қолданбаның баптаулары немесе пайдаланушының қалауларын сақтау үшін пайдаланылады.
    • Деректер XML файлына сақталады.
  4. SQLite дерекқорлары:

    • Қатысты дерекқор.
    • Құрылымдалған деректерді сақтау үшін жарамды.
    • Деректермен жұмыс істеу үшін SQL сұрауларын қолдануға мүмкіндік береді.
  5. Content Providers:

    • Қолданбалар арасында деректерге қол жеткізу үшін стандартталған интерфейс.
    • Байланыстар немесе күнтізбе сияқты деректермен алмасу үшін пайдаланылады.
    • Басқа компоненттерден қолданбаның өз деректеріне қол жеткізу үшін қолданылуы мүмкін.
  6. 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)