SelfZhangTQ / T-MVVM

This repository contains a detailed sample app that implements MVVM architecture using LiveData,ViewModel,Retrofit,Rxjava
685 stars 163 forks source link

LiveBus同一个key只能添加一个观察者,第二个观察者无法收到通知 #12

Open 0xByteLeon opened 5 years ago

0xByteLeon commented 5 years ago

` public static class LiveBusData extends MutableLiveData {

    private boolean isFirstSubscribe;

    LiveBusData(boolean isFirstSubscribe) {
        this.isFirstSubscribe = isFirstSubscribe;
    }

    @Override
    public void observe(@NonNull LifecycleOwner owner, @NonNull Observer<T> observer) {
        super.observe(owner, new ObserverWrapper<>(observer, isFirstSubscribe));
    }
}

private static class ObserverWrapper<T> implements Observer<T> {

    private Observer<T> observer;

    private boolean isChanged;

    private ObserverWrapper(Observer<T> observer, boolean isFirstSubscribe) {
        this.observer = observer;
        isChanged = isFirstSubscribe;
    }

    @Override
    public void onChanged(@Nullable T t) {
        if (isChanged) {
            if (observer != null) {
                observer.onChanged(t);
            }
        } else {
            isChanged = true;
        }
    }

}`

问题再isChanged 和 isFirstSubscribe 标志位上,请修改~