Junior — Middle
Kādi pieejas pastāv informācijas apmaiņai starp Fragment un Service Android?
sobes.tech AI
Atbilde no AI
Lai apmainītos ar informāciju starp Fragment un Service Android, var izmantot vairākus pieejas veidus:
- BroadcastReceiver — Service sūta plašsaziņas ziņojumu, un Fragment tam abonējas.
- Bound Service — Fragment pieslēdzas Service ar binding un tieši izsauc tā metodes.
- EventBus (piemēram, Otto vai GreenRobot EventBus bibliotēkas) — vienkāršo ziņojumu apmaiņu starp komponentiem.
- Shared ViewModel (ja tiek izmantota arhitektūra ar ViewModel un LiveData) — var glabāt datus, kas ir pieejami gan Fragment, gan Service.
Piemērs ar Bound Service:
// Fragmentā
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder binder) {
MyService.LocalBinder localBinder = (MyService.LocalBinder) binder;
myService = localBinder.getService();
// Tagad var izsaukt servisa metodes
}
@Override
public void onServiceDisconnected(ComponentName name) {
myService = null;
}
};
// Pievienoties servisam
getActivity().bindService(new Intent(getContext(), MyService.class), connection, Context.BIND_AUTO_CREATE);
Šis veids ļauj tieši izsaukt servisa metodes no Fragment.