RxJava

RxJava<第八篇>:RxJava实现预加载

2019-03-13  本文已影响1人  NoBugException
/**
 * 预加载
 */
public class RxPreLoader<T> {

    //能够缓存订阅之前的最新数据
    private BehaviorSubject<T> mData;
    private Disposable disposable;

    public RxPreLoader(T defaultValue){
        mData = BehaviorSubject.createDefault(defaultValue);
    }

    /**
     * 发送事件
     * @param object
     */
    public void publish(T object){
        mData.onNext(object);
    }

    /**
     * 订阅事件
     * @param onNext
     * @return
     */
    public Disposable subscribe(Consumer<T> onNext){
        Disposable disposable = mData.subscribe(onNext);
        return disposable;
    }

    /**
     * 取消订阅
     */
    public void dispose(){
        if(disposable != null && !disposable.isDisposed()){
            disposable.dispose();
            disposable = null;
        }
    }

    /**
     * 获取缓存数据的Subject
     * @return
     */
    public BehaviorSubject<T> getCacheDataSubject() {
        return mData;
    }

    /**
     * 获取最近的数据
     * @return
     */
    public T getLastCacheData(){
        return mData.getValue();
    }

}
上一篇 下一篇

猜你喜欢

热点阅读