LiveEventBus
LiveEventBus copied to clipboard
BusLiveData 不兼容 MediatorLiveData
public void observeForever(@NonNull Observer<T> observer) {
if (!observerMap.containsKey(observer)) {
observerMap.put(observer, createForeverObserver(observer));
}
super.observeForever(observerMap.get(observer));
}
现在这个过滤导致对消息的组合监听出现问题,调用链为
MediatorLiveData.onActive 或 MediatorLiveData.addSource -> Source.plug -> liveData.observeForever(此时的 liveData 为 busLiveData) -> ObserverWrapper.onChange(带过滤功能的 wrapper ) -> 被过滤了...
如果上面的过滤规则一定要存在,则建议增加判断条件,如果调用链中有 MediatorLiveData 则不进行过滤。
请问为何要过滤掉由observeForever时产生的onChange
你是指的把LiveEventBus中的LiveData取出来放到MediatorLiveData.addSource的调用中吗? 感觉这样做有点奇怪啊,不知道我理解错了没