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ų:
- BroadcastReceiver — Service siunčia transliacijos žinutę, į kurią prenumeruoja Fragment.
- Bound Service — Fragment jungiasi prie Service per binding ir tiesiogiai kviečia jo metodus.
- EventBus (pvz., Otto arba GreenRobot EventBus biblioteka) — palengvina žinučių keitimą tarp komponentų.
- 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.