Inte rnet мониторинг состояния соединения с помощью наблюдаемых выполняется только один раз - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу иметь мониторинг соединения для целых приложений rnet, для этого я использую rx java, я создал класс util и получил метод stati c для состояния соединения, подобный этому:

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()
    })

проблема в том, что всплывающее окно активности показывает правильное состояние, но когда я выключаю / включаю вкл (изменить статус соединения inte rnet) ничего не происходит, тост не появляется

Спасибо!

1 Ответ

1 голос
/ 27 апреля 2020

Ваше решение даст только одноразовый ответ, для получения обновлений об изменении сети вам следует ReactiveNetwork .

ReactiveNetwork
  .observeNetworkConnectivity(context)
  .subscribeOn(Schedulers.io())
  .observeOn(AndroidSchedulers.mainThread())
  .subscribe(connectivity -> {
      if(connectivity.getState() == NetworkInfo.State.DISCONNECTED) {
          Log.d(TAG,"Connection lost");
        } else if(connectivity.getState() == NetworkInfo.State.CONNECTED) {
          Log.d(TAG,"Connected");
        }
  });
...