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:

    • Ҷойгузини Префертҳои умумӣ.
    • 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)