Junior
Android колдонмолорунда кандай маалымат сактоо түрлөрү бар?
sobes.tech AI
AIден жооп
-
Ички сактоо (Internal Storage):
- Тек гана файл түзгөн тиркемеге жеткиликтүү.
- Файлдар тиркемени өчүргөндө өчүрүлөт.
- Тиркеменин сырдуу маалыматтарын сактоо үчүн ылайыктуу.
-
Чыгыш сактоо (External Storage):
- Бардык тиркемелер үчүн жеткиликтүү ( уруксат сурагандан кийин).
- Файлдар тиркемени өчүргөндөн кийин да калат.
- Жалпы маалыматтарды сактоо үчүн ылайыктуу, мисалы сүрөттөр же музыка.
-
Бөлүштүрүлгөн артыкчылыктар (Shared Preferences):
- Кичинекей көлөмдөгү маалыматтарды ачкыч-маани форматы менен сактайт.
- Тиркеменин жөндөөлөрүн же колдонуучунун артыкчылыктарын сактоо үчүн колдонулат.
- Маалымат XML файлына сакталат.
-
SQLite маалымат базалары:
- Байланыштуу маалымат базасы.
- Структураланган маалыматтарды сактоо үчүн ылайыктуу.
- Маалыматты иштетүү үчүн SQL суроолорун колдонууга мүмкүндүк берет.
-
Content Providers:
- Тиркемелер ортосунда маалыматка жетүүнүн стандартташтырылган интерфейси.
- Контакттар же күнтүзмө сыяктуу маалымат алмашуу үчүн колдонулат.
- Башка компоненттерден тиркеменин өздүк маалыматтарына жетүү үчүн колдонулушу мүмкүн.
-
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)