Sobes.tech
Junior

Android ilovalarida qanday ma'lumotlarni saqlash turlari mavjud?

sobes.tech AI

AIdan javob

  1. Ichki saqlash:

    • Faqat faylni yaratgan ilova uchun mavjud.
    • Fayllar ilovani o'chirish bilan o'chiriladi.
    • Ilovaning maxfiy ma'lumotlarini saqlash uchun mos keladi.
  2. Tashqi saqlash:

    • Barcha ilovalar uchun mavjud (ruxsat so'ralgandan so'ng).
    • Fayllar ilovani o'chirishdan keyin ham saqlanadi.
    • Rasm yoki musiqa kabi umumiy ma'lumotlarni saqlash uchun mos keladi.
  3. Ulashilgan sozlamalar:

    • Kalit-qiymat formatida kichik hajmdagi ma'lumotlarni saqlaydi.
    • Ilova sozlamalari yoki foydalanuvchi afzalliklarini saqlash uchun ishlatiladi.
    • Ma'lumotlar XML faylida saqlanadi.
  4. SQLite ma'lumotlar bazalari:

    • Aloqador ma'lumotlar bazasi.
    • Tuzilgan ma'lumotlarni saqlash uchun mos keladi.
    • Ma'lumotlarni manipulyatsiya qilish uchun SQL so'rovlaridan foydalanish mumkin.
  5. Content Providerlar:

    • Ilovalar o'rtasida ma'lumotlarga kirish uchun standart interfeys taqdim etadi.
    • Kontaktlar yoki kalendarga o'xshash ma'lumotlarni almashish uchun ishlatiladi.
    • Boshqa komponentlardan ilova ma'lumotlariga kirish uchun ishlatilishi mumkin.
  6. Jetpack DataStore:

    • Ulashilgan sozlamalarni o'rnini bosadi.
    • Ma'lumotlarni saqlash uchun asenkron API taqdim etadi.
    • Ma'lumotlarning turini aniqlash va xatoliklarni boshqarishni qo'llab-quvvatlaydi.

Ushbu misol bilan Ulashilgan Sozlamalardan foydalanish:

// SharedPreferences ob'ektini olish
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    // Qiymatni saqlash
    putBoolean("is_first_run", false)
    apply() // O'zgarishlarni asenkron tarzda qo'llash
}

// Qiymatni o'qish
val isFirstRun = sharedPref.getBoolean("is_first_run", true)

SQLite dan foydalanish misoli:

// Ma'lumotlar bazasini va jadvalni yaratish
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) {
        // Ma'lumotlar bazasini yangilash logikasi
    }
}

// Ma'lumotlarni qo'shish
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase

val values = ContentValues().apply {
    put(DBHelper.COLUMN_NAME, "Misol nomi")
}

val newRowId = db.insert(DBHelper.TABLE_NAME, null, values)