Sobes.tech
Junior

Какви методи за съхранение на данни знаеш?

sobes.tech AI

Отговор от AI

  1. SharedPreferences: За съхраняване на прости двойки ключ-стойност (примитивни типове). Бърз достъп, но не е подходящ за големи обеми данни.

  2. Вътрешна памет (Internal Storage): Файлова система, достъпна само за приложението. Данните се изтриват при деинсталиране. Подходяща за лични данни.

    // Запис на файл
    applicationContext.openFileOutput("my_file.txt", Context.MODE_PRIVATE).use {
        it.write("Some data".toByteArray())
    }
    
    // Четене на файл
    applicationContext.openFileInput("my_file.txt").bufferedReader().useLines { lines ->
        lines.forEach { println(it) }
    }
    
  3. Външна памет (External Storage): Файлова система, достъпна за други приложения (с разрешения) и потребителя. Данните остават след деинсталиране. Изисква внимание към разрешенията в Android 10+. Подходяща за нечувствителни данни.

  4. SQLite бази данни: Релационна база данни. Подходяща за структурирани данни, изискващи сложни заявки. Изисква повече код за реализиране. Room Persistence Library е препоръчваният ORM.

    -- Пример SQL заявка
    SELECT * FROM users WHERE age > 30
    
  5. Content Providers: Предоставят структурирана достъп до споделени набори от данни. Могат да бъдат създадени за свои данни или за достъп до данни на други приложения (например контакти).

  6. DataStore: Модерно асинхронно решение за съхранение на данни, заместващо SharedPreferences и част от функционалността на SQLite. Има два вида: Preferences DataStore (за двойки ключ-стойност) и Proto DataStore (за типизирани обекти с Protobuf).

    // Пример Preferences DataStore
    val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
    
    suspend fun saveSetting(context: Context, key: String, value: Boolean) {
        context.dataStore.edit { settings ->
            settings[booleanPreferencesKey(key)] = value
        }
    }
    
  7. Jetpack DataStore (по-стари версии) / DataSync / други облачни решения: За синхронизиране на данни между устройствата на потребителя и съхраняване на бекъпи. Изисква интеграция с облачни услуги.

Изборът на метод зависи от типа данни, техния обем, необходимостта от споделен достъп, въпроси за сигурност и изисквания за производителност.