Junior — Middle
Jaké přístupy existují pro výměnu informací mezi Fragment a Service v Androidu?
sobes.tech AI
Odpověď od AI
Pro výměnu informací mezi Fragmentem a Service v Androidu lze použít několik přístupů:
- BroadcastReceiver — Service vysílá broadcast zprávu, na kterou se Fragment přihlásí.
- Bound Service — Fragment se připojí ke Service přes binding a volá její metody přímo.
- EventBus (například knihovna Otto nebo GreenRobot EventBus) — usnadňuje výměnu zpráv mezi komponentami.
- Shared ViewModel (pokud se používá architektura s ViewModel a LiveData) — lze ukládat data, která jsou dostupná jak pro Fragment, tak pro Service.
Příklad s Bound Service:
// V Fragmentu
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder binder) {
MyService.LocalBinder localBinder = (MyService.LocalBinder) binder;
myService = localBinder.getService();
// Nyní lze volat metody servisu
}
@Override
public void onServiceDisconnected(ComponentName name) {
myService = null;
}
};
// Připojení ke službě
getActivity().bindService(new Intent(getContext(), MyService.class), connection, Context.BIND_AUTO_CREATE);
Tato metoda umožňuje přímo volat metody servisu z Fragmentu.