0

Je travaille sur AndroidService, où toutes les 5 minutes un appel réseau est effectué pour rechercher de nouvelles données à partir de la base de données. J'ai mis en œuvre BroadcastListener pour écouter la connexion constante à l'intérieur du service, mais l'application plante à chaque fois.BroadcastReciever provoquer un plantage dans AndroidService

Erreur:

java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4000010 (has extras) } in [email protected] 

À l'échelle mondiale a déclaré:

BroadcastReceiver receiver; 

code:

@Override 
public void onCreate() { 
    super.onCreate(); 
    registerReceiver(receiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 

} 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 

      if(ConnectionStatus.isConnected(MyService.this)){ 
        //some work 
      } 
      else { 
       //some task 
      } 
     } 
    }; 

    registerReceiver(receiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
    return START_STICKY; 

} 

Répondre

2

onCreate arrive avant onStartCommand si vous essayez d'enregistrer un récepteur de radiodiffusion avec un récepteur nul. Retirez le registre de onCreate et cela devrait fonctionner.

+0

Je reçois toujours le même 'RuntimeException', j'ai également supprimé –

+0

Aussi où devrait enregistrer le récepteur? –

+0

Le désinscrivez-vous lorsque le service est détruit? J'ai à peu près exactement le même code dans un service qui fonctionne bien. – Ryan