Junior
Кадом намудҳои захираҳои маълумот дар барномаҳои Android мавҷуданд?
sobes.tech AI
Ҷавоб аз AI
-
Даруни захира (Internal Storage):
- Танҳо барои барнома, ки файлро сохтааст, дастрас аст.
- Файлҳо ҳангоми хориҷ кардани барнома тоза мешаванд.
- Барои нигоҳдории маълумоти махфии барнома мувофиқ аст.
-
Захираи беруна (External Storage):
- Барои ҳама барномаҳо дастрас аст (пас аз дархости иҷозат).
- Файлҳо ҳатто пас аз хориҷ кардани барнома боқӣ мемонанд.
- Барои нигоҳдории маълумоти умумӣ, мисли аксҳо ё мусика, мувофиқ аст.
-
Префертҳои умумӣ (Shared Preferences):
- Миқдори ками маълумотро дар формат калид-арзиш нигоҳ медорад.
- Барои нигоҳдории танзимотҳои барнома ё афзалиятҳои корбар истифода мешавад.
- Маълумот дар файли XML нигоҳ дошта мешавад.
-
Базаҳои маълумоти SQLite:
- Базаи маълумоти муоширатӣ.
- Барои нигоҳдории маълумоти сохторӣ мувофиқ аст.
- Иҷозат медиҳад, ки бо истифода аз SQL дархостҳо барои идоракунии маълумот истифода шавад.
-
Провайдерҳои мундариҷа (Content Providers):
- Интерфейси стандарти барои дастрасӣ ба маълумот байни барномаҳо.
- Барои мубодилаи маълумот, мисли тамосҳо ё тақвим, истифода мешаванд.
- Мумкин аст барои дастрасӣ ба маълумоти худи барнома аз дигар компонентҳо истифода шавад.
-
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)