Junior
Android ilovalarida qanday ma'lumotlarni saqlash turlari mavjud?
sobes.tech AI
AIdan javob
-
Ichki saqlash:
- Faqat faylni yaratgan ilova uchun mavjud.
- Fayllar ilovani o'chirish bilan o'chiriladi.
- Ilovaning maxfiy ma'lumotlarini saqlash uchun mos keladi.
-
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.
-
Ulashilgan sozlamalar:
- Kalit-qiymat formatida kichik hajmdagi ma'lumotlarni saqlaydi.
- Ilova sozlamalari yoki foydalanuvchi afzalliklarini saqlash uchun ishlatiladi.
- Ma'lumotlar XML faylida saqlanadi.
-
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.
-
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.
-
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)