不幸的是,我不明白如何检查 Observable。
取决于连接 - 我想从网络或数据库中获取我的数据。
我有一种检查网络连接的方法:
companion object {
fun isConnected() : Observable<Boolean> {
val connectivityManager = MyApplication.applicationContext().getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork = connectivityManager.activeNetworkInfo
val isConnectedException = activeNetwork != null && activeNetwork.isConnectedOrConnecting
return Observable.just(isConnectedException)
}
}
因此,如果这是真的,我想调用我的网络方法:
override fun searchGroups(q: String): Observable<List<Group>> {
return groupApi.searchGroups(GroupSearchRequest(q).toMap())
.flatMap { groupResponse -> Observable.just(groupResponse.response.items) }
.doOnNext{ groupList -> groupRepository.insertGroups(groupList)}
}
在另一种情况下,我想调用 DB 方法:
override fun getGroupsFromDB(q: String): Observable<List<Group>> {
return groupRepository.findByName(q)
}
这是我的尝试,但我认为由于可为空的交互器存在问题,但仍然不知道该怎么做。
compositeDisposable.add(
NetworkManager.isConnected()
.flatMap {
if (it) {
interactor?.searchGroups(q)
} else {
interactor?.getGroupsFromDB(q)
}
}
}
)
有人可以帮我吗?
更新
所以问题出在可为空的对象interactor
上。
有人可以建议不使用对象的更好方法!!
吗interactor
?