Sobes.tech
Junior — Middle

Aké prístupy existujú na výmenu informácií medzi Fragment a Service v Android?

sobes.tech AI

Odpoveď od AI

Pre výmenu informácií medzi Fragment a Service v Androidu je možné použiť niekoľko prístupov:

  1. BroadcastReceiver — Service vysiela broadcast správu, na ktorú sa Fragment prihlási.
  2. Bound Service — Fragment sa pripája k Service cez binding a volá jej metódy priamo.
  3. EventBus (napríklad knižnica Otto alebo GreenRobot EventBus) — zjednodušuje výmenu správ medzi komponentmi.
  4. Shared ViewModel (ak sa používa architektúra s ViewModel a LiveData) — môže ukladať údaje, ktoré sú dostupné ako pre Fragment, tak pre Service.

Príklad s Bound Service:

// Vo Fragmente
private ServiceConnection connection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        MyService.LocalBinder localBinder = (MyService.LocalBinder) binder;
        myService = localBinder.getService();
        // Teraz je možné volať metódy servisu
    }

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

// Pripojenie ku servisu
getActivity().bindService(new Intent(getContext(), MyService.class), connection, Context.BIND_AUTO_CREATE);

Táto metóda umožňuje priamo volať metódy servisu z Fragmentu.