Je suis tombé sur registerDefaultNetworkCallback et registerNetworkCallback lors de la mise à jour de mon Android pour l'API 28).
Après avoir examiné la documentation, je ne trouve pas la différence entre l'enregistrement d'un rappel réseau et l'enregistrement d'un par défaut rappel réseau .
Quand utilisera-t-on lequel?
Merci d'avance :)
Pour autant que je sache, la différence entre registerDefaultNetworkCallback
et registerNetworkCallback
est uniquement basée sur la personnalisation.registerDefaultNetworkCallback
fonctionne (de manière surprenante) comme écouteur réseau par défaut, tandis que registerNetworkCallback
est plus configurable. Par exemple:
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")
}
})
Ici, onAvailable
ne sera appelé que si l'utilisateur se connecte à un réseau cellulaire (en se connectant au WiFi, il n'enregistrera rien). La même chose onLost
lors de la déconnexion du réseau cellulaire.
Si nous le faisons comme ceci:
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")
}
})
Les deux fonctions fonctionnent comme des rappels par défaut lorsque l'utilisateur se connecte (ou se déconnecte) à/d'un réseau (il peut s'agir du WiFi ou du cellulaire).
Ce ne sont que quelques exemples très basiques. Bien sûr, NetworkRequest
peut avoir de nombreuses configurations en définissant son capability
ou transportType
. Vous pouvez en savoir plus à ce sujet dans la documentation officielle de NetworkRequest .
Pour autant que j'ai compris, et à part les informations fournies par @MihaiV, il y a une autre différence entre eux.
ConnectivityManager.registerDefaultNetworkCallback()
a été ajouté dans l'API 24 (ou 26, selon que vous l'utilisez le long d'un Handler
).
And ConnectivityManager.registerNetworkCallback()
a été ajoutée dans l'API 21 (ou l'API 23 si elle est utilisée le long d'un NetworkRequest
.