Остановка сервиса от активности - PullRequest
0 голосов
/ 07 сентября 2011

У меня есть служба с наблюдателем контента, который наблюдает за провайдером календаря, и в некоторых случаях мне нужно остановить службу, чтобы onchange обозревателя не вызывали при добавлении события, а затем перезапускали службу, когда она добавлялась.

В своей деятельности я использую stopService(new Intent(context,Service.class));, чтобы остановить службу, затем запускаю ее снова позже, пытаясь избежать вызова onchange, когда провайдер меняется, но не появляется, что служба останавливается, потому что onchangeвсе еще вызывается, вызывая принудительное закрытие в моей базе данных, потому что мой запрос в моей службе еще не может найти событие.

так как я могу обойти эту проблему?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2011

Попробуй так:

ComponentName service = startService(new Intent(this, BaseballWatch.class));
// Stop a service using the service name.
stopService(new Intent(this, service.getClass()));
// Stop a service explicitly.
try {
  Class serviceClass = Class.forName(service.getClassName());
  stopService(new Intent(this, serviceClass));
} catch (ClassNotFoundException e) {}
0 голосов
/ 07 сентября 2011

Если вы возвращаете START_REDELIVER_INTENT, это может повлиять на вас. Вот что говорят об этом доктора:

если процесс этой службы завершается при запуске (после возвращаясь из onStartCommand (Intent, int, int)), тогда это будет запланировано перезапуск и последний доставленный Намерение повторно доставлено это снова через onStartCommand (Intent, int, int).

Но опять же, там написано "убито", поэтому это не должно повлиять на вас.

Кроме этого, я не уверен, в чем проблема, но если вы действительно не можете заставить его работать, и никто не даст вам лучший ответ (что, надеюсь, кто-то даст), вы могли бы сделать registerReceiver(...) в сервисе, а затем в своей деятельности выполните sendBroadcast(...), а в onReceive в получателе услуг позвоните stopSelf(). Я знаю, что это неаккуратный и не лучший подход, но это идея альтернативного метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...