【发布时间】:2020-05-21 15:52:37
【问题描述】:
我正在设计一个允许在 Android 设备上检查 Internet 连接的功能。我决定使用反应式方法来实现它。
该函数非常好用并且非常简单:它只是尝试为后端解析 IP,如果 DNS 请求失败则返回 false,成功则返回 true。
函数代码如下:
fun isConnectedToInternet(): Single<Boolean> {
// Just check whether we can resolve IP for our target API endpoint
return Single
.defer{Single.just(InetAddress.getByName(API_URL).toString())}
.subscribeOn(Schedulers.io())
// Trick to map an error to just a false value
.onErrorReturnItem("Error")
.map { it != "Error" }
}
问题是最后两行是否被认为是一种好的做法,如果它不是以更好的方式做我想做的事情的正确选择?
【问题讨论】: