Rx系列<第七篇>:RxJava实现预加载

/**
 * 预加载
 */
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();
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。