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:
- BroadcastReceiver — Service vysiela broadcast správu, na ktorú sa Fragment prihlási.
- Bound Service — Fragment sa pripája k Service cez binding a volá jej metódy priamo.
- EventBus (napríklad knižnica Otto alebo GreenRobot EventBus) — zjednodušuje výmenu správ medzi komponentmi.
- 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.