LiveEventBus icon indicating copy to clipboard operation
LiveEventBus copied to clipboard

BusLiveData 不兼容 MediatorLiveData

Open alvminvm opened this issue 6 years ago • 1 comments

        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

alvminvm avatar Mar 27 '19 03:03 alvminvm

你是指的把LiveEventBus中的LiveData取出来放到MediatorLiveData.addSource的调用中吗? 感觉这样做有点奇怪啊,不知道我理解错了没

JeremyLiao avatar Mar 31 '19 03:03 JeremyLiao