Sobes.tech
Junior

Koje vrste skladišta podataka postoje u Android aplikacijama?

sobes.tech АИ

Одговор од АИ

  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)