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" />

Надеюсь это поможет!

Другие вопросы по тегам