SolidlSnake
@SolidlSnake
Ваш дружелюбный сосед

Возможно ли использование одного Service для разных задач?

Обновляю виджет при помощи Service раз в 24 часа.
Такое дело, что необходимо делать еще одно действие (а именно уведомления [notification]) раз в 24 часа, но с другой точкой отсчета. Т.е. виджет обновляется в 00:01, а уведомление, к примеру, должно появляться в 17:40.
В данный момент реализую через два сервиса, что очень не красиво и муторно само по себе. В особенности потому что данные для Notification находятся в первом сервисе, таким образом я вызываю первый сервис, а из него второй. Выходит совсем не красивая программная многоножка.
Можно ли как-то один Service заставить работать на две эти задачи или ничего лучше того, что есть сейчас не придумать? :)
  • Вопрос задан
  • 2413 просмотров
Пригласить эксперта
Ответы на вопрос 1
@linreal
Можно, используя pendingIntent с разными requestCode. Например:

public static void startProgramNotifications(Context c) {
        AlarmManager am;

        am = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(c, TimerReceiver.class); //TimerReceiver - сервис
        PendingIntent pendingIntent = PendingIntent.getBroadcast(c, 0, // 0 - requestCode
                intent, PendingIntent.FLAG_CANCEL_CURRENT );
        am.cancel(pendingIntent); //cancel active intent, optional
        am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ setNitifTime(), pendingIntent);

    }

В сервисе, в методе onReceive, вытаскиваем requestCode и на его основе выполняем необходимый код.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы