Junior — Middle
Koji pristupi postoje za razmenu informacija između Fragment i Service u Androidu?
sobes.tech АИ
Одговор од АИ
Za razmenu informacija između Fragment i Service u Androidu, može se koristiti nekoliko pristupa:
- BroadcastReceiver — Service šalje broadcast poruku, na koju se Fragment pretplaćuje.
- Bound Service — Fragment se povezuje sa Service putem binding-a i direktno poziva njegove metode.
- EventBus (npr. biblioteka Otto ili GreenRobot EventBus) — olakšava razmenu poruka između komponenti.
- Shared ViewModel (ako se koristi arhitektura sa ViewModel i LiveData) — može čuvati podatke dostupne i za Fragment i za Service.
Primer sa Bound Service:
// U Fragmentu
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder binder) {
MyService.LocalBinder localBinder = (MyService.LocalBinder) binder;
myService = localBinder.getService();
// Sada možete pozivati metode servisa
}
@Override
public void onServiceDisconnected(ComponentName name) {
myService = null;
}
};
// Povezivanje sa servisom
getActivity().bindService(new Intent(getContext(), MyService.class), connection, Context.BIND_AUTO_CREATE);
Ovaj metod omogućava direktno pozivanje metoda servisa iz Fragmenta.