Je suis en train de construire une application qui récupère périodiquement des données d'un site web en utilisant une alarme récurrente et un IntentService. Avant d'exécuter la mise à jour, je vérifie la connectivité réseau avec un ConnectivityManager.
Si le ConnectivityManager signale qu'il n'y a pas de réseau actif, je souhaite réessayer la mise à jour lorsque le réseau devient actif. Utiliser un BroadcastReceiver qui écoute l'action ConnectivityManager.CONNECTIVITY_ACTION semble être la meilleure façon de procéder, mais quel serait le moyen approprié d'enregistrer/désenregistrer ce receveur?
Je pense que lorsque la vérification du réseau échoue dans l'IntentService, je pourrais enregistrer le BroadcastReceiver avec le ApplicationContext afin qu'il ne soit pas désenregistré lorsque le service s'arrête. Pourrais-je ensuite désenregistrer le receveur dans sa propre méthode onReceive lorsqu'il se déclenche? Suis-je complètement à côté de la plaque?
Quelques exemples de pseudo code:
MyIntentService:
if (!isNetworkConnected())
getApplicationContext().registerReceiver(new MyBroadcastReceiver(), new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
MyBroadcastReceiver:
public void onReceive(Context context, Intent intent) {
context.getApplicationContext().unregisterReceiver(this);