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)