Насколько я понял, разница между 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 .