继续完善上次懵懵懂懂的流程.
原理还是一样的.不明白的看一看
Android 使用RxJava+Retrofit +Realm 组合加载数据 <读取缓存 显示 请求网络数据 缓存最新数据 更新界面>(一)
这次整合的是数据库Realm点击查看中文文档感兴趣的可以去看看.
使用Realm的原因是它和Retrofit一样.天生支持Rxjava,当然还有其他的,不过我没用过.
Realm配置 Applaction中 ,如果配置了多进程的话.最好是判断一下包名,防止调用多次
private void initRealm() {
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this)
.name("xxx.realm")
.schemaVersion(1)
.rxFactory(new RealmObservableFactory()) //默认Rxjava支持,貌似不写也可以
.deleteRealmIfMigrationNeeded()//测试使用,每次都删除原来的数据
// .encryptionKey(key)
// .modules(new MySchemaModule())
// .migration(migration)
.build();
Realm.setDefaultConfiguration(realmConfiguration);
}
Realm 配合Rxjava查询方法,官方文档配置
// Combining Realm, Retrofit and RxJava (Using Retrolambda syntax for brevity)
// Load all persons and merge them with their latest stats from GitHub (if they have any)
Realm realm = Realm.getDefaultInstance();
GitHubService api = retrofit.create(GitHubService.class);
realm.where(Person.class).isNotNull("username").findAllAsync().asObservable()
.filter(persons.isLoaded)
.f

本文是关于Android中使用RxJava、Retrofit和Realm进行数据加载、缓存和界面更新的续篇。重点讨论了如何在Realm中配合RxJava进行查询操作,注意到了使用Realm.getDefaultInstance().asObservable()可能导致的多次数据刷新问题,建议使用filter/first()避免。此外,介绍了如何结合concat操作符将查询和网络请求整合,实现无网络时读取缓存,有网络时请求并更新数据的过程。
1922

被折叠的 条评论
为什么被折叠?



