yale8848 / RetrofitCache

RetrofitCache让retrofit2+okhttp3+rxjava配置缓存如此简单。通过注解配置,可以针对每一个接口灵活配置缓存策略;同时让每一个接口方便支持数据模拟,可以代码减小侵入性,模拟数据可以从内存,Assets,url轻松获取。
MIT License
676 stars 85 forks source link

不支持Rxjava2吗? #1

Closed imliujun closed 6 years ago

yale8848 commented 6 years ago

目前不支持,因为里面用到反射,还没有适配rx2

imliujun commented 6 years ago

建议不要使用反射,通过其他方式实现,性能问题就不说了,如果Retrofit的内部结构改变,你的反射就失效了,这样用在生产环节风险太大了

yale8848 commented 6 years ago

嗯 是的,目前用反射是为了省内存,直接反射到Retrofit 相关对象,然后直接从对象里拿数据的;直接实现的话就得把Retrofit 解析接口的过程自己实现一遍

imliujun commented 6 years ago

可以参考一下RxCache的做法,我有个想法是在Retrofit的接口上再做一层代理,这样数据从你这里经过就可以实现缓存逻辑,也不需要管Retrofit的逻辑。

yale8848 commented 6 years ago

嗯,你的想法很赞, Retrofit 就是用动态代理的;如果这样做的话要自己把如@Path,@Query,@QueryMap 等注解要自己再解析一遍,因为目前cache是针对每一个接口配置的,其实我早就想费掉反射了,一直没时间弄

imliujun commented 6 years ago

我觉得这个思路如果实现出来比RxCache要好用多了

yale8848 commented 6 years ago

是啊,我当初看RxCache功能是很强大,但是太庞大,太重了,所以自己实现个轻量级的; 谢谢你的关注,我近期抽空重构一下,如果你愿意,咱可以一起做

imliujun commented 6 years ago

我觉得可以搞,重构成RxJava2吧

yale8848 commented 6 years ago

如果自己搞,我觉得rx1和rx2都可以支持的

imliujun commented 6 years ago

那得建两个分支分别维护

yale8848 commented 6 years ago

缓存这块实现用的是okhttp的缓存方式,其实就是http协议的缓存,理论上可以独立rx,我先合计合计,回头拉个分支,把框架搭起来看看

imliujun commented 6 years ago

嗯,主要的工作量还是在动态代理和缓存处理这一块,Rx只是对数据进行包装一下

yale8848 commented 6 years ago

rxjava2已经支持了