SharedFlow的设计是为了提供一个通用的、可共享的事件流机制,支持事件的重播、缓存等。 状态持有和重播不同 StateFlow: 总是持有最新的状态值。 新的观察者会立即收到当前持有的状态值。 流中的每个新值都会覆盖之前的值,即只有最新的状态值会被保留。 SharedFlow: 不会持有单一最新状态值(除非配置了重播缓存)。
与Flow 不同的是,SharedFlow 和 StateFlow 是热流,不依赖 collect 来触发数据的流动。同时 SharedFlow 和 StateFlow 都支持数据共享的,内部也有缓存,可以获取发送的数据。如下图所示: / StateFlow / StateFlow 中文翻译是状态流,主要用于共享一个状态的数据流时。在...
与流不同,Stateflow和Sharedflow是热流,这意味着即使没有收集器,它们也会发出数据。此外,如果有多个...
和上面的StateFlow不同的是,这个不能主动通知collect方,需要不断emit元素,也就是利用了flow的功能 设计初衷不同 StateFlow的设计是为了取代ConflatedBroadcastChannel,用于表示状态,并且总是持有最新的状态值。 SharedFlow的设计是为了提供一个通用的、可共享的事件流机制,支持事件的重播、缓存等。 状态持有和重播不同 St...
状态持有和重播不同 StateFlow: 总是持有最新的状态值。 新的观察者会立即收到当前持有的状态值。 流中的每个新值都会覆盖之前的值,即只有最新的状态值会被保留。 SharedFlow: 不会持有单一最新状态值(除非配置了重播缓存)。 可以配置重播机制(replay参数)以指定新的观察者接收之前多少个已发射的值。
状态持有和重播不同 StateFlow: 总是持有最新的状态值。 新的观察者会立即收到当前持有的状态值。 流中的每个新值都会覆盖之前的值,即只有最新的状态值会被保留。 SharedFlow: 不会持有单一最新状态值(除非配置了重播缓存)。 可以配置重播机制(replay参数)以指定新的观察者接收之前多少个已发射的值。
状态持有和重播不同 StateFlow: 总是持有最新的状态值。 新的观察者会立即收到当前持有的状态值。 流中的每个新值都会覆盖之前的值,即只有最新的状态值会被保留。 SharedFlow: 不会持有单一最新状态值(除非配置了重播缓存)。 可以配置重播机制(replay参数)以指定新的观察者接收之前多少个已发射的值。