Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
#1

Уведомления в заданное время без Alarm - Android

03.01.2016, 20:21. Просмотров 467. Ответов 5
Метки нет (Все метки)

Пытаюсь вывести уведомление в заданное время не используя AlarmManager. Т.к. через AlarmManager, после перезагрузки, выводятся все уведомления по очереди, время и дата которых уже прошли, и остаётся висеть последнее уведомление. Причем если уведомлений много, то устройство вибрирует и звякает несколько секунд после каждой перезагрузки или каждый раз, как убивается процесс всякими Clean Master и другими похожими приложениями и соответственно после запуска процесса начинается тоже самое. Чем раздражает пользователя. Решил использовать такой код, но он не работает:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class MyService extends Service {
    NotificationManager nm;
 
    public IBinder onBind(Intent intent) {
        return null;
    }
 
    void someTask() { }
 
    public int onStartCommand(Intent intent, int flags, int startId) {
        someTask();
        return super.onStartCommand(intent, flags, startId);
    }
 
    public void onDestroy() {
        super.onDestroy();
    }
 
    public void onCreate() {
        Calendar c = Calendar.getInstance();
        CharSequence date = c.get(Calendar.HOUR_OF_DAY) + "." + c.get(Calendar.MINUTE);
        if((date.equals("20.15")) || (date.equals("22.34")) || (date.equals("23.45"))) {
 
            CharSequence string1 = "Title";
            CharSequence string2 = "Text";
            nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            Notification notif = new Notification(R.mipmap.ic_launcher, string1,
                    System.currentTimeMillis());
 
            Intent intent1 = new Intent(this, MainActivity.class);
            PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
 
            notif.setLatestEventInfo(this, string2, string1, pIntent);
 
            notif.flags |= Notification.FLAG_AUTO_CANCEL;
            notif.defaults = Notification.DEFAULT_ALL;
            nm.notify(1, notif);
        }
    }
}
Пожалуйста помогите разобраться или найти другие решения.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2016, 20:21     Уведомления в заданное время без Alarm
Посмотрите здесь:

Android Не удаляется Alarm
Android Alarm Manager
Переход между Activity через заданное время. Как лучше? Android
Alarm broadcastIntent убивается через какое-то время Android
Android Ждать ответ заданное время
Выводить оповещения в заданное время Android
Снова Alarm Manager: как запустить на API выше 19-го? Android
Ошибки в коде. Alarm Manager Android
Push уведомления без сторонних сервисов Android
Как запустить метод в заданное время Android
Android Отменить Alarm
Alarm manager не запускается чаще чем раз в час Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
18.01.2016, 01:26  [ТС]     Уведомления в заданное время без Alarm #2
Неужели никто не может помочь?
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
18.01.2016, 08:41     Уведомления в заданное время без Alarm #3
Цитата Сообщение от naven Посмотреть сообщение
Т.к. через AlarmManager, после перезагрузки, выводятся все уведомления по очереди, время и дата которых уже прошли, и остаётся висеть последнее уведомление.
Ну это вроде как нормальное поведение, вы же не хотите чтобы ваш пользователь что-то важное пропустил? А если и хотите так не показывайте эти уведомления. Просто когда срабатывает AlarmManager проверяйте не прошло ли достаточно времени, чтобы это уведомление не показывать, таким образом поступайте и во всех остальных случаях и никак иначе не выйдет. А код который вы привели сработает только если приложение запустится в минуту когда вам нужно показать уведомление, так не пойдет, и никакими другими способами вы не сможете корректно отследить время показа уведомления т.к. ваше приложение может быть просто убито. А AlarmManager для того и создан, чтобы воскресить/разбудить ваше приложение в указанное время, а что потом делать это уже ваша проблема.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
18.01.2016, 08:58     Уведомления в заданное время без Alarm #4
Цитата Сообщение от naven Посмотреть сообщение
Т.к. через AlarmManager, после перезагрузки, выводятся все уведомления по очереди, время и дата которых уже прошли, и остаётся висеть последнее уведомление.
Я не вам ли уже рассказывал путь решения этой проблемы?
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
18.01.2016, 13:47  [ТС]     Уведомления в заданное время без Alarm #5
DarkVortex, а как правильно проверять, не прошло ли время? А то у меня ничего не получается. Если можно пример.
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
22.01.2016, 03:00  [ТС]     Уведомления в заданное время без Alarm #6
Rube, как правильно проверить прошло ли время и если прошло, то не выводить уведомление? Если можно пример.
Yandex
Объявления
22.01.2016, 03:00     Уведомления в заданное время без Alarm
Ответ Создать тему
Опции темы

Текущее время: 02:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru