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)