Sobes.tech
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:

  1. BroadcastReceiver — Service šalje broadcast poruku, na koju se Fragment pretplaćuje.
  2. Bound Service — Fragment se povezuje sa Service putem binding-a i direktno poziva njegove metode.
  3. EventBus (npr. biblioteka Otto ili GreenRobot EventBus) — olakšava razmenu poruka između komponenti.
  4. 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.