О сборе значений из хранилища данныхAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 О сборе значений из хранилища данных

Сообщение Anonymous »

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

Код: Выделить всё

    suspend fun storeVolume(volume: Int) {
dataStore.edit {
it[VOLUME] = volume
}
}

fun getVolume(): Flow = dataStore.data.map {
it[VOLUME] ?: DEFAULT_VOLUME_SIZE
}

suspend fun storeMediaPath(path: String) {
dataStore.edit {
it[MEDIA] = path
}
}

fun getMediaFile(): Flow = dataStore.data.map {
it[MEDIA]?.let { path -> File(path) }
}

Код: Выделить всё

init {
viewModelScope.launch {
dataStoreHelper.getVolume().collectLatest { volume ->
_mainUiState.update { it.copy(volume = volume) }
}
}
viewModelScope.launch {
dataStoreHelper.getMediaFile().collectLatest { file ->
_mainUiState.update { it.copy(alarmMedia = file) }
}
}
}
Мне не удалось найти никакой документации по этому поводу.
Похоже, что когда я сохраняю значение, оно передается всем потокам, которые его собирают. значение.
Поэтому кажется, что он выполняет ненужные задачи, и мне хотелось бы это оптимизировать.

Подробнее здесь: https://stackoverflow.com/questions/785 ... -datastore
Ответить

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

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

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

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

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