Невозможно получить обратный вызов, когда inte rnet выключено, а затем приложение запускается внутри NetworkCallback - PullRequest
0 голосов
/ 30 января 2020

Поскольку getActiveNetworkInfo устарела в Android в соответствии с официальным документом, я использую приведенную ниже реализацию для получения обратного вызова о подключении Inte rnet.

private val connectivityManager: ConnectivityManager by lazy {
   getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
}

private val builder: NetworkRequest.Builder by lazy {
   NetworkRequest.Builder()
}

private val networkCallback: NetworkCallback by lazy {
   object : NetworkCallback() {
      override fun onAvailable(network: Network?) {
          println("Connection is online")
      }

      override fun onLost(network: Network?) {
          println("Connection is offline")
      }
   }
}

override fun onResume() {
   super.onResume()
   connectivityManager.registerNetworkCallback(builder.build(), networkCallback)
}

override fun onPause() {
   super.onPause()
   connectivityManager.unregisterNetworkCallback(networkCallback)
}

Это хорошо работает, когда этот обратный вызов регистрируется при подключении находится в сети, но не работает должным образом, когда inte rnet выключен, а затем мы регистрируем обратный вызов. Чтобы проверить такой сценарий, я держал свое приложение закрытым. Затем оставьте соединение inte rnet отключенным, а затем откройте приложение.

Есть ли у нас какой-либо способ узнать, открывается ли приложение? Если так, пожалуйста, помогите поделиться этим. Спасибо.

1 Ответ

1 голос
/ 30 января 2020

Согласно вашему вопросу, я бы предложил прочитать эту часть Android документации. Вы используете onPause () и onResume (), вы должны попробовать onStop ().

Но я думаю, что вам нужно вызывать super.onPause () после вашей logi c connectivityManager.unregisterNetworkCallback (networkCallback) потому что это приостановит приложение до того, как ваш метод будет вызван.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...