Если вы находитесь в одном и том же Process-Space (то же приложение / .apk), вы можете просто установить простое подключение к услуге
В свою деятельность включите что-то вроде следующего:
private ServiceConnection _svcConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName arg0) {
_myService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
_myService = ((MyService.LocalBinder) service).getService();
if(!_myService.IsRunning())
_myService.Start();
}
};
@Override
protected void onResume() {
bindService(new Intent(Main.this, MyService.class), _svcConnection
BIND_AUTO_CREATE);
startService(new Intent(Main.this, MyService.class));
super.onResume();
}
@Override
protected void onPause() {
unbindService(_svcConnection);
super.onPause();
}
Ваша служба нуждается в связующем:
private final IBinder _Binder = new LocalBinder();
@Override
public IBinder onBind(Intent arg0) {
return _Binder;
}
/**
* Class for clients to access. Because we know this service always runs in
* the same process as its clients, we don't need to deal with IPC.
*/
public class LocalBinder extends Binder {
public MyService getService() {
return MyService.this;
}
}
Затем вы можете работать с объектом _MyService и вызывать любой метод для него. (Например, регистрация обратного вызова или запрос на обновление местоположения), но имейте в виду, что в случае сбоя подключения службы переменная _MyService будет иметь значение null!
_MyService.SetInterval(4);
Если вам нужен доступ к этой услуге из другого Приложения (Другой Процесс), вам придется иметь дело с IPC.