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)