Существуют потоки для сбора тома и пути к носителю.
Я понимаю, что когда я сохраняю значение, оно должно быть собрано в соответствующем потоке, и в настоящее время оно ведет себя именно так.
Однако, когда я сохраняю том, поток медиа-пути также генерирует , чего не должно произойти.
Код: Выделить всё
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
Мобильная версия