通过可观察对象进行的Internet连接状态监视仅运行一次

问题描述 投票:0回答:1

我想进行应用程序范围的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()
    })

问题是活动打开的烤面包片显示正确的状态,但是当我关闭/打开(更改互联网连接的状态)时,什么也没有发生,没有烤面包片出现

谢谢!

android rx-java rx-android android-connectivitymanager rx-binding
1个回答
0
投票

您的解决方案将只提供一次答案,要接收网络更改的更新,您应该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");
    }
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.