Back to questions
Wildberries
Junior — Middle
66
Какими методами осуществляется взаимодействие с Bound Service в Android?
Companies where asked
Answer from AI
sobes.tech AI
Взаимодействие с Bound Service в Android осуществляется через следующие методы:
-
Связывание (Binding): Клиент (например, Activity) связывается с сервисом через
bindService(). При успешном связывании вызывается методonServiceConnected(), где клиент получает объектIBinderдля взаимодействия с сервисом. -
Вызов методов сервиса: Через полученный
IBinderклиент может вызывать публичные методы сервиса напрямую, что позволяет обмениваться данными и управлять сервисом. -
Отвязывание (Unbinding): Когда взаимодействие заканчивается, клиент вызывает
unbindService(), чтобы разорвать связь.
Пример простого Bound Service:
public class MyService extends Service {
private final IBinder binder = new LocalBinder();
public class LocalBinder extends Binder {
MyService getService() {
return MyService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
public int getRandomNumber() {
return new Random().nextInt(100);
}
}
// В Activity
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MyService.LocalBinder binder = (MyService.LocalBinder) service;
myService = binder.getService();
bound = true;
}
@Override
public void onServiceDisconnected(ComponentName name) {
bound = false;
}
};
bindService(intent, connection, Context.BIND_AUTO_CREATE);
Таким образом, взаимодействие происходит через интерфейс IBinder и методы bindService/unbindService.