gpt4 book ai didi

java - RxJava/RxAndroid 检查互联网连接是否可用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:02:00 24 4
gpt4 key购买 nike

我有这个代码来检查互联网连接是否可用。

    public static boolean  isOnline() {
Runtime runtime = Runtime.getRuntime();
try {
Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
int exitValue = ipProcess.waitFor();
return (exitValue == 0);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
return false;
}

现在我想使用 RxJava/RxAndroid 来完成同样的任务。那我该怎么做呢?

最佳答案

如果您被允许使用 ConnectivityManager,这是检查互联网连接的快速方法:

public static Observable<Boolean> isInternetOn(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return Observable.just(activeNetworkInfo != null && activeNetworkInfo.isConnected());
}

然后按如下方式使用它:

private Observable<Object> executeNetworkCall() {
return isInternetOn(context)
.filter(connectionStatus -> connectionStatus)
.switchMap(connectionStatus -> doNetworkCall()));
}

如果您需要更多信息,这 answer提供了更详细的说明。

关于java - RxJava/RxAndroid 检查互联网连接是否可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41790410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com