Android-уведомление pendingIntent для остановки службы
У меня есть два действия уведомления, одно для остановки службы и одно для ее перезапуска. Я успешно запускаю службу, но не могу остановить ее с помощью этого кода:
PendingIntent show = PendingIntent.getService(this, 1, svc, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent hide = PendingIntent.getService(this, 1, svc, PendingIntent.FLAG_CANCEL_CURRENT);
Есть идеи?
Не дубликат, поскольку мой вопрос касается именно действий уведомления, а не кнопок (у меня нет проблем с тем, чтобы мои кнопки останавливали и запускали службу).
1 ответ:
Только этот флаг не остановит службу. Я бы рекомендовал вам сделать действие stop вместо запуска пользовательского класса
BroadcastReceiver
, который запускает методstopService()
внутри егоonReceive()
. Дайте мне знать, если вам понадобится помощь в создании чего-то подобного более подробно.Отредактированный ответ:
Измените ваши
Intent
иPendingIntent
для действия скрыть на это:Intent intentHide = new Intent(this, StopServiceReceiver.class); PendingIntent hide = PendingIntent.getBroadcast(this, (int) System.currentTimeMillis(), intentHide, PendingIntent.FLAG_CANCEL_CURRENT);
Затем сделайте
StopServiceReceiver
таким образом, гдеServiceYouWantStopped.class
- служба, которая должна быть остановлена:public class StopServiceReceiver extends BroadcastReceiver { public static final int REQUEST_CODE = 333; @Override public void onReceive(Context context, Intent intent) { Intent service = new Intent(context, ServiceYouWantStopped.class); context.stopService(service); } }
Убедитесь, что
BroadcastReceiver
Вы just made объявляется в файле манифеста:<receiver android:name=".StopServiceReceiver" android:enabled="true" android:process=":remote" />
Надеюсь, это поможет!