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:
- BroadcastReceiver — Service saadab levitatava sõnumi, millele Fragment registreerub.
- Bound Service — Fragment ühendub Service-iga bindingi kaudu ja kutsub otse selle meetodeid.
- EventBus (näiteks Otto või GreenRobot EventBus raamatukogud) — lihtsustab sõnumite vahetust komponentide vahel.
- 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.