Как использовать Android DataStore с несколькими пользователями или файлами ⇐ Android
-
Anonymous
Как использовать Android DataStore с несколькими пользователями или файлами
Я хочу сохранить некоторые настройки с помощью 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 способ закрытия соединения или обработки нескольких файлов?
Я хочу сохранить некоторые настройки с помощью 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 способ закрытия соединения или обработки нескольких файлов?
Мобильная версия