Junior — Middle
Кадом роҳҳо барои мубодилаи маълумот байни Fragment ва Service дар Android вуҷуд доранд?
sobes.tech AI
Ҷавоб аз AI
Барои мубодилаи маълумот байни Fragment ва Service дар Android, метавон чанд роҳро истифода бурд:
- BroadcastReceiver — Service паёми пахш мекунад, ва Fragment ба он обуна мешавад.
- Bound Service — Fragment бо Service тавассути binding пайваст мешавад ва ба таври мустақим методҳои онро даъват мекунад.
- EventBus (масалан, китобхонаи Otto ё GreenRobot EventBus) — мубодилаи паёмҳоро байни компонентҳо содда мекунад.
- Shared ViewModel (агар архитектура бо ViewModel ва LiveData истифода шавад) — метавонад маълумотҳоро нигоҳ дорад, ки ҳам барои Fragment ва ҳам барои Service дастрас бошанд.
Масалан бо 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();
// Акнун метавонем методҳои сервисро даъват кунем
}
@Override
public void onServiceDisconnected(ComponentName name) {
myService = null;
}
};
// Пайвастшавӣ ба сервис
getActivity().bindService(new Intent(getContext(), MyService.class), connection, Context.BIND_AUTO_CREATE);
Ин усул имкон медиҳад, ки мустақиман методҳои сервисро аз Fragment даъват кунед.