Разница между registerDefaultNetworkCallback и registerNetworkCallback - PullRequest
0 голосов
/ 20 декабря 2018

Я сталкивался с registerDefaultNetworkCallback и registerNetworkCallback при обновлении моего приложения Android для API 28.

Изучив документацию, я не могу найти разницу между регистрацией сетевой обратный вызов и регистрация по умолчанию сетевой обратный вызов .

Когда кто-нибудь будет его использовать?

Заранее спасибо:)

1 Ответ

0 голосов
/ 19 мая 2019

Насколько я понял, разница между registerDefaultNetworkCallback и registerNetworkCallback основана только на настройке.
registerDefaultNetworkCallback работает (удивительно) в качестве сетевого прослушивателя по умолчанию, когда registerNetworkCallback не более настраиваемый,Например:

    val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

    val builder = NetworkRequest.Builder()
    builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)

    val networkRequest = builder.build()
    connectivityManager.registerNetworkCallback(networkRequest, 
    object : ConnectivityManager.NetworkCallback () {
        override fun onAvailable(network: Network?) {
            super.onAvailable(network)
            Log.i("Test", "Network Available")
        }

        override fun onLost(network: Network?) {
            super.onLost(network)
            Log.i("Test", "Connection lost")
        }
    })

Здесь onAvailable будет вызываться только в том случае, если пользователь подключается к сотовой сети (при подключении к WiFi он ничего не регистрирует).То же самое происходит onLost при отключении от сотовой сети.

Если мы делаем это следующим образом:

    connectivityManager.registerDefaultNetworkCallback(object  : ConnectivityManager.NetworkCallback() {
        override fun onAvailable(network: Network?) {
            super.onAvailable(network)
            Log.i("Test", "Default -> Network Available")
        }

        override fun onLost(network: Network?) {
            super.onLost(network)
            Log.i("Test", "Default -> Connection lost")
        }
    })

Обе функции работают как обратные вызовы по умолчанию, когда пользователь подключается (или отключается) к/ из сети (это может быть либо WiFi, либо сотовая связь).

Это лишь некоторые из самых простых примеров.Конечно, NetworkRequest может иметь много конфигураций, установив capability или transportType.Вы можете прочитать больше об этом в официальной документации NetworkRequest .

...