Sobes.tech
Junior — Middle

Millised lähenemised on olemas teabe vahetamiseks Fragment ja Service vahel Androidis?

sobes.tech AI

Vastus AI-lt

Androidis, Fragment ja Service vahel info vahetamiseks saab kasutada mitmeid lähenemisviise:

  1. BroadcastReceiver — Service saadab levitatava sõnumi, millele Fragment registreerub.
  2. Bound Service — Fragment ühendub Service-iga bindingi kaudu ja kutsub otse selle meetodeid.
  3. EventBus (näiteks Otto või GreenRobot EventBus raamatukogud) — lihtsustab sõnumite vahetust komponentide vahel.
  4. Shared ViewModel (kui kasutatakse arhitektuuri ViewModel ja LiveData-ga) — saab salvestada andmeid, mis on kättesaadavad nii Fragmentile kui Service-ile.

Näide Bound Service-iga:

// Fragmentis
private ServiceConnection connection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        MyService.LocalBinder localBinder = (MyService.LocalBinder) binder;
        myService = localBinder.getService();
        // Nüüd saab kutsuda service meetodeid
    }

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

// Service-iga ühendamine
getActivity().bindService(new Intent(getContext(), MyService.class), connection, Context.BIND_AUTO_CREATE);

See meetod võimaldab otse kutsuda Service meetodeid Fragmentist.