0

不幸的是,我不明白如何检查 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

在此处输入图像描述

4

0 回答 0