Как использовать Android DataStore с несколькими пользователями или файламиAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как использовать Android DataStore с несколькими пользователями или файлами

Сообщение Anonymous »


Я хочу сохранить некоторые настройки с помощью DataStore. Но проблема в том, что у моего приложения может быть несколько пользователей, и поэтому эти настройки необходимо хранить в отдельных файлах. У меня есть рабочий пример с использованием только одного пользователя, но мне сложно поддерживать несколько пользователей.

Вот пример моего кода:

class DataStorageRepository(private val context: Context, Private val userRepository: UserRepository) { частный объект PreferencesKeys { val SETTING_ONE = intPreferencesKey("setting_one") } // извлекаем хранилище данных для текущего пользователя, вошедшего в систему. частный вал Context.dataStore: DataStore по предпочтениямDataStore(name = userRepository.currentRegistration().name) val userPreferencesFlow: Flow = context.dataStore.data.map { предпочтения -> val SettingOne = предпочтения[PreferencesKeys.SETTING_ONE] ?: 0 Пользовательские настройки (settingOne) } приостановить fun storeSettingOne(settingOne: Int) { context.dataStore.edit { предпочтения -> предпочтения[PreferencesKeys.SETTING_ONE] = SettingOne } } класс данных UserPreferences (val LastUsedToAccountTab: Int) } Я использую Koin и пытался выгрузить DataStorageRepository при выходе из системы и воссоздать его при входе в систему, но хранилище данных, кажется, остается в живых до тех пор, пока приложение не будет уничтожено, и я получаю следующий сбой:

java.lang.IllegalStateException: активно несколько хранилищ данных. для того же файла: [...] Вам следует либо сохранить свое хранилище данных как синглтон или убедитесь, что на сервере нет двух активных DataStore. тот же файл (подтвердив отмену области действия).

Я также пытался использовать CoroutineScope и уничтожать его при выходе из системы, но после воссоздания области при входе в систему DataStore, похоже, не создается заново.

Поддерживает ли DataStore способ закрытия соединения или обработки нескольких файлов?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»