我想进行应用程序范围的Internet连接监视,为此,我正在使用rxjava,我制作了一个util类,并获得了用于连接状态的静态方法,如下所示:
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE)
as ConnectivityManager
val activeNetworkInfo = connectivityManager.activeNetworkInfo
return Observable.just(activeNetworkInfo != null && activeNetworkInfo.isConnected)
在每个活动之后,我都将获得对此的引用并像这样订阅它:
isInternetOn(this).retry().subscribe({
Toast.makeText(this@MainActivity, it.toString(), Toast.LENGTH_SHORT).show()
})
问题是活动打开的烤面包片显示正确的状态,但是当我关闭/打开(更改互联网连接的状态)时,什么也没有发生,没有烤面包片出现
谢谢!
您的解决方案将只提供一次答案,要接收网络更改的更新,您应该ReactiveNetwork。
ReactiveNetwork.observeNetworkConnectivity(context)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<ConnectivityStatus>() {
@Override public void call(Connectivity connectivity) {
if(connectivity.getState() == NetworkInfo.State.DISCONNECTED) {
Log.d(TAG,"Connection lost");
} else if(connectivity.getState() == NetworkInfo.State.CONNECTED) {
Log.d(TAG,"Connected");
}
}
});