Как отобразить уведомление Android в установленные сроки - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу показывать уведомление каждые 15 минут только с 8:00 до 16:00. Вот код:

        Calendar calendar = Calendar.getInstance();
        Calendar calendarStartOfTheDay = Calendar.getInstance();
        Calendar calendarEndOfTheDay = Calendar.getInstance();

        calendarStartOfTheDay.set(Calendar.HOUR_OF_DAY, 8);
        calendarStartOfTheDay.set(Calendar.MINUTE, 0);
        calendarStartOfTheDay.set(Calendar.SECOND, 0);

        calendarEndOfTheDay.set(Calendar.HOUR_OF_DAY, 16);
        calendarEndOfTheDay.set(Calendar.MINUTE, 0);
        calendarEndOfTheDay.set(Calendar.SECOND, 0);

        AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
        if (alarmManager != null && calendar.getTimeInMillis() > calendarStartOfTheDay.getTimeInMillis() && calendar.getTimeInMillis() < calendarEndOfTheDay.getTimeInMillis()) {
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + 15 * 60 * 1000, AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent);
        }

Есть ли решение, кроме проверки текущего времени до notificationManager.notify() Если это единственное решение, не слишком ли сильно разряжает батарею ночью?

1 Ответ

0 голосов
/ 06 сентября 2018

Это можно сделать с помощью планировщика заданий в Android. Как менеджер тревоги устарел и больше не используется. Планировщик заданий также обеспечивает гибкость планирования задания для запуска в определенных условиях, такие как:

Устройство заряжается

Устройство подключено к неизмеренной сети

Устройство не используется

Начать до определенного срока

Запуск в заранее определенное временное окно, например, в течение следующего часа

Запуск после минимальной задержки, например, подождите не менее 10 минут

Вы можете перейти по этой ссылке для реализации

https://medium.com/google-developers/scheduling-jobs-like-a-pro-with-jobscheduler-286ef8510129

...