Android Communiquer deux activités via un récepteur de diffusion personnalisé


Exemple

Vous pouvez communiquer deux activités pour que l'activité A puisse être informée d'un événement se produisant dans l'activité B.

Activité A

final String eventName = "your.package.goes.here.EVENT";

@Override
protected void onCreate(Bundle savedInstanceState) {
    registerEventReceiver();
    super.onCreate(savedInstanceState);
}

@Override
protected void onDestroy() {
    unregisterEventReceiver(eventReceiver);
    super.onDestroy();
}

private void registerEventReceiver() {
    IntentFilter eventFilter = new IntentFilter();
    eventFilter.addAction(eventName);
    registerReceiver(eventReceiver, eventFilter);
}

private BroadcastReceiver eventReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
         //This code will be executed when the broadcast in activity B is launched
    }
};

Activité B

final String eventName = "your.package.goes.here.EVENT";

private void launchEvent() {
    Intent eventIntent = new Intent(eventName);
    this.sendBroadcast(eventIntent);
}

Bien entendu, vous pouvez ajouter plus d’informations à la diffusion en ajoutant des extras à l’intention transmise entre les activités. Pas ajouté pour garder l'exemple aussi simple que possible.