Отделите службу и предпочтения с помощью намерения, отправленного в startService (). Эта функция плохо названа - она не просто запускает службу (она запускает ее при необходимости). startService () также отправит сообщение службе, которая уже запущена.
Таким образом, в вашем предпочтительном слушателе, ВНУТРИ вашей префом активности, вы бы назвали что-то вроде:
Intent messageIntent = new Intent(context, MyService.class);
messageIntent.setAction(MyService.GAME_ALERT);
messageIntent.putExtra(MyService.GAME_ID, gameId);
context.startService(messageIntent);
Чтобы получить это сообщение в сервисе, вы переопределяете onStartService () примерно так (обратите внимание, что липкость необязательна - зависит от варианта использования вашего сервиса):
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent == null)
return START_STICKY;
try {
String action = intent.getAction();
if (GAME_ALERT.equals(action)) {
// handle it
String gameId = intent.getStringExtra(GAME_ID);
if (gameId != null) {
//
}
}
} catch (Throwable e) {
Log.e("me", "problem: ", e);
}
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}