记一个简单的Rxcache的栗子

1 相关依赖:

    compile "com.github.VictorAlbertos.RxCache:runtime:1.8.3-2.x"
    compile "io.reactivex.rxjava2:rxjava:2.1.6"
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    compile 'com.github.VictorAlbertos.Jolyglot:gson:0.0.3'

2 具体代码

    调用类

 FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              final  UserInfo  user =   new UserInfo("JACK","000001");
//                Observable  observable   =    Observable.create(new ObservableOnSubscribe<UserInfo>() {
//                    @Override
//                    public void subscribe(ObservableEmitter<UserInfo> e) throws Exception {
//                            e.onNext(user);
//                    }
//                });
            Observable<UserInfo> observable   =      Observable.just(user);
                App app = (App) getApplication();
                app.getUserCacheProviders()
                        .getUser(observable,new DynamicKey(user.getUserid()))
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(user1 -> textView.setText(user1.toString()));
            }
        });
public interface Providers  {
    @LifeCache(duration = 10, timeUnit = TimeUnit.SECONDS)
    Observable<UserInfo> getUser(Observable<UserInfo> user, DynamicKey  dynamicKey);
}
public class UserInfo {

    private  String name;
    private  String userid;
    public  String sjbh;

    public UserInfo(String name, String userid) {
        this.name = name;
        this.userid = userid;
        sjbh = UUID.randomUUID().toString();
    }

每十秒钟 显示的user  uuid都是不一样的

DynamicKey存储有一个Key,DynamicKey的应用场景: 请求同一个接口,需要参照一个变量的不同返回不同的数据,比如分页,构造时传入页数就可以了

DynamicKeyGroup存储有两个key,DynamicKeyGroup是在DynamicKey基础上的加强版 例如:

DynamicKeyGroup dynamicKeyGroup = new DynamicKeyGroup(category, page);

EvictDynamicKeyGroup 只会删除对应分页下,对应用户的缓存

EvictDynamicKey 会删除那个分页下的所有缓存,比如你请求的是第一页下user1的数据,它不仅会删除user1的数据还会删除当前分页下其他user2,user3...的数据

EvictProvider 会删除当前接口下的所有缓存,比如你请求的是第一页的数据,它不仅会删除第一页的数据,还会把这个接口下其他分页的数据全删除
 

猜你喜欢

转载自blog.csdn.net/yan822/article/details/81315718