我怎样才能从可观察的

时间:2017-12-14 12:31:37

标签: android networking kotlin reactive-programming

我在Kotlin项目中有这个功能。我正在使用ReactiveNetwork -  Android库侦听网络连接状态和与RxJava Observables的Internet连接。我是反应式编程的新手,现在我需要重构这个方法以在很多地方使用它。如何重构此方法以返回互联网连接状态(isConnected)?

private fun downloadProductIfConnected(arguments: Bundle){
    ReactiveNetwork.checkInternetConnectivity().subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe{ isConnected ->
                if (isConnected){
                    downloadAndOpenProduct(arguments)
                }else{
                    displayConnectionErrorDialog(arguments)
                }
            }
}

1 个答案:

答案 0 :(得分:0)

可以在此处使用高阶函数,如下所示

private fun downloadProductIfConnected(callback:(Boolean)->Any){
  ReactiveNetwork.checkInternetConnectivity().subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe{ isConnected -> callback(isConnected) }
    }

你可以像这样打电话

downloadProductIfConnected { isConnected-> onConnectionResult(isConnected) }


fun onConnectionResult(isConnected: Boolean){
    //do something with isConnected
}