主体是 Activity + ViewPager + Fragment, Fragment 的 recyclerview 加载列表.
MainViewModel 中持有 FragmentViewModel 和 MainRepository 实例.(MainRepository 实现数据获取).MainViewModel 中实现了 MainActicity 的LifecycleObserver
接口,可以在 Acticity creat resume 等等时候,做一些数据操作.
整体是 MVVM,直接对 FragmentViewModel 的实例执行xxx.set(items)
设置数据,对应 recyclerview 就能刷新数据(不用考虑线程问题)
整体需要实现的功能,如图
源码地址 > https://github.com/Jasper-1024/MyPrivacy/tree/MVVM_test/app/src/main/java/com/jasperhale/myprivacy/Activity 暂时比较乱,还没整理.
我尝试使用 rxjava 的 BehaviorSubject 来实现这个过程.
在 FragmentViewModel 中新建一个 public 的 BehaviorSubject
MainRepository 获取数据过程包装成一个Observable <ObservableList> applistObservable
在 FragmentViewModel 将设置过程(xxx.set(items)
)包装成一个 Observer<ObservableList> setObserver
在 MainActicity creat/destory 时候 绑定 /解绑 applistObservable.subscribe(behaviorSubject);
在 Fragment creat/destory 时候 绑定 /解绑 behaviorSubject.subscribe(setObserver);