Sobes.tech
Junior — Middle

Quelles approches existent pour échanger des informations entre Fragment et Service dans Android?

sobes.tech IA

Réponse de l'IA

Pour échanger des informations entre Fragment et Service dans Android, plusieurs approches peuvent être utilisées :

  1. BroadcastReceiver — Le Service envoie un message de diffusion, auquel le Fragment s'abonne.
  2. Service lié (Bound Service) — Le Fragment se connecte au Service via un binding et appelle ses méthodes directement.
  3. EventBus (par exemple, la bibliothèque Otto ou GreenRobot EventBus) — facilite l’échange de messages entre composants.
  4. Shared ViewModel (si architecture avec ViewModel et LiveData) — permet de stocker des données accessibles à la fois pour le Fragment et le Service.

Exemple avec Bound Service :

// Dans le Fragment
private ServiceConnection connection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        MyService.LocalBinder localBinder = (MyService.LocalBinder) binder;
        myService = localBinder.getService();
        // Il est maintenant possible d’appeler les méthodes du service
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        myService = null;
    }
};

// Connexion au service
getActivity().bindService(new Intent(getContext(), MyService.class), connection, Context.BIND_AUTO_CREATE);

Ce moyen permet d’appeler directement les méthodes du service depuis le Fragment.