Android - Уведомление в ожидании намерения остановить службу
У меня есть два действия уведомления, одно, чтобы остановить службу и одно, чтобы перезапустить ее. Я успешно запускаю службу, но не могу остановить ее с помощью этого кода:
PendingIntent show = PendingIntent.getService(this, 1, svc, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent hide = PendingIntent.getService(this, 1, svc, PendingIntent.FLAG_CANCEL_CURRENT);
Есть идеи?
Не дубликат, так как мой вопрос касается именно уведомлений, а не кнопок (у меня нет проблем с получением кнопок для остановки и запуска службы).
1 ответ
Один этот флаг не остановит службу. Я бы порекомендовал вам сделать остановку действия вместо запуска кастома 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
Вы только что сделали, объявлено в вашем файле манифеста:
<receiver
android:name=".StopServiceReceiver"
android:enabled="true"
android:process=":remote" />
Надеюсь это поможет!