Sobes.tech
Junior — Middle

Kokie požiūriai egzistuoja informacijos mainams tarp Fragment ir Service Android?

sobes.tech AI

Atsakymas iš AI

Norint keistis informacija tarp Fragment ir Service Android, galima naudoti keletą požiūrių:

  1. BroadcastReceiver — Service siunčia transliacijos žinutę, į kurią prenumeruoja Fragment.
  2. Bound Service — Fragment jungiasi prie Service per binding ir tiesiogiai kviečia jo metodus.
  3. EventBus (pvz., Otto arba GreenRobot EventBus biblioteka) — palengvina žinučių keitimą tarp komponentų.
  4. Shared ViewModel (jei naudojama architektūra su ViewModel ir LiveData) — gali saugoti duomenis, prieinamus tiek Fragment, tiek Service.

Pavyzdys su Bound Service:

// Fragment'e
private ServiceConnection connection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        MyService.LocalBinder localBinder = (MyService.LocalBinder) binder;
        myService = localBinder.getService();
        // Dabar galima kviečiant Service metodus
    }

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

// Prisijungimas prie Service
getActivity().bindService(new Intent(getContext(), MyService.class), connection, Context.BIND_AUTO_CREATE);

Šis būdas leidžia tiesiogiai kviečiant Service metodus iš Fragment.