Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.58/24: Рейтинг темы: голосов - 24, средняя оценка - 4.58
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
1

AlarmManager не срабатывает, когда телефон засыпает

16.04.2013, 17:37. Просмотров 4376. Ответов 15
Метки нет (Все метки)

Использую AlarmManager. Все работает хорошо, но когда телефон не спит. Стоит ему уснуть и процесс не выполнится. Подскажите в какую сторону копать. Нужен механизм что-то вроде будильника...
Заранее спасибо...

P.S. делал через сервис, но и он засыпает...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 17:37
Ответы с готовыми решениями:

Не срабатывает AlarmManager после выключения экрана
Доброго дня! Прошу помощи. Приложение выполняет отложенные задачи через...

Alarmmanager срабатывает позже назначенного времени
Столкнулся со следующей проблемой. Запланирована задача, задача срабатывает не...

FCM: не срабатывает onMessageReceived когда приложение прибито
Здравствуйте. Столкнулся с проблемой -- не срабатывает onMessageReceived...

AlarmManager
Добрый вечер, как задать время вручную ? alarmManager.set(AlarmManager.RTC,...

AlarmManager
Всем привет. Взял код AlarmManager отсюда. В свой проект добавил...

15
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
16.04.2013, 17:54 2
Используйте BroadcastReceiver, а не Service
0
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
16.04.2013, 18:00  [ТС] 3
У меня есть свой класс наследованный от
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
public class MyAlarmReceiver extends BroadcastReceiver { 
    @Override
    public void onReceive(Context context, Intent intent) {     
    ...
    }
}

Этот рессивер зарегистрирован в манифесте (слышал, что это не хорошо, но пока так)

И есть класс в котором есть метод установки alarm-a
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
    public void set_alarm(){
        alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        intent = new Intent(context, MyAlarmReceiver.class);
        Uri data = Uri.withAppendedPath(Uri.parse(PreferencesConst.URI_SCHEME+"://myclass/id/"),String.valueOf(id));
        intent.setData(data);
        pi = PendingIntent.getBroadcast(context, 0, intent, 0);
        alarmMgr.set(AlarmManager.RTC, getTime().getTimeInMillis(), pi);
    }


Что я не так делаю?
0
c4sp3r
0x5B4C322291BD52AE
94 / 94 / 0
Регистрация: 04.03.2013
Сообщений: 295
16.04.2013, 18:00 4
dubok79, RTC_WAKEUP

http://developer.android.com/referen...tml#RTC_WAKEUP
0
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
16.04.2013, 18:02  [ТС] 5
Цитата Сообщение от c4sp3r Посмотреть сообщение
dubok79, RTC_WAKEUP
А разве телефон не проснется? Или он и должен просыпаться? Я в том смысле, что экран не обязательно включится в этом случае? А то меня съедят пользователи....
0
c4sp3r
0x5B4C322291BD52AE
94 / 94 / 0
Регистрация: 04.03.2013
Сообщений: 295
16.04.2013, 18:05 6
И еще alarmMgr.set насколько помню не пойдет но могу ошибаться.
0
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
16.04.2013, 18:07  [ТС] 7
Цитата Сообщение от c4sp3r Посмотреть сообщение
И еще alarmMgr.set насколько помню не пойдет но могу ошибаться.
Что значит не пойдет?
0
c4sp3r
0x5B4C322291BD52AE
94 / 94 / 0
Регистрация: 04.03.2013
Сообщений: 295
16.04.2013, 18:16 8
dubok79, насколько я помню экран при этом не включается просто я уже давно свой будильник писал и не помню всех подробностей.

Добавлено через 8 минут
Цитата Сообщение от dubok79 Посмотреть сообщение
Что значит не пойдет?
Как я писал выше могу ошибать поэтому проверь если не будет работать используй setInexactRepeating или setRepeating. А отлючать будешь используя cancel.
1
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
16.04.2013, 18:19  [ТС] 9
Цитата Сообщение от c4sp3r Посмотреть сообщение
А отлючать будешь используя cancel.
Кстати на счет отключения. Отключаю так:
Java
1
2
3
4
5
6
    public void del_alarm(){
        alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        intent = new Intent(context, MyAlarmReceiver.class);
        pi = PendingIntent.getBroadcast(context, 0, intent, 0);
        alarmMgr.cancel(pi);
    }
но по ходу не получается или я отключаю, что то не то
0
c4sp3r
0x5B4C322291BD52AE
94 / 94 / 0
Регистрация: 04.03.2013
Сообщений: 295
16.04.2013, 18:55 10
dubok79, таких явных ошибок не вижу вот тебе подсказка:

Код
adb shell dumpsys alarm
выведет список всех запланированных алармов (заданий) среди них должен быть твой (имя пакета) также там будет указано оставшееся время до срабатывания и после вызова cancel твой alarm соответственно должен быть удален из этого списка.

P.S. делал через сервис, но и он засыпает...
чтобы сервис не спал нужно использовать PowerManager другого способа я не знаю.
1
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
16.04.2013, 19:01  [ТС] 11
Цитата Сообщение от c4sp3r Посмотреть сообщение
выведет список всех запланированных алармов
Да видел этот список много раз. Может действительно RPC_WAKEUP сейчас потестирую
0
c4sp3r
0x5B4C322291BD52AE
94 / 94 / 0
Регистрация: 04.03.2013
Сообщений: 295
16.04.2013, 19:08 12
Цитата Сообщение от dubok79 Посмотреть сообщение
Может действительно RPC_WAKEUP сейчас потестирую
В твоем случае только RTC_WAKEUP или ELAPSED_REALTIME_WAKEUP.
0
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
16.04.2013, 19:12  [ТС] 13
Да, список вывел, спасибо. Нашел все алармы.
Вопрос такой еще: аларм я использую для выдачи уведомлений. Эти уведомления запускаются от разных виджетов (те что на рабочем столе). Вижу что алармов много, а виджетов уже нет, они удалены, т.е. при удалении надо останавливать аларм. Как остановить именно тот, что вызвал виджет?
0
c4sp3r
0x5B4C322291BD52AE
94 / 94 / 0
Регистрация: 04.03.2013
Сообщений: 295
16.04.2013, 19:56 14
dubok79, а вот с виджетами не знаю я еще не пробовал их писать и про их Lifecycle нечего не знаю. У меня был сервис который работал в фоне даже если устройство спит и активити с Toggle Button если юзер отключает посылал cancel а сам сервис работал по расписанию и если время подошло тоже посылал cancel.
0
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
16.04.2013, 21:09  [ТС] 15
c4sp3r, спасибо еще раз. Все работает как надо. Это все мой ломаный английский виноват
0
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
25.09.2013, 07:40  [ТС] 16
Вернусь к этой теме. Недавно увидел, что все будильники убиваются после перезагрузки устройства. Каким образом их можно восстановить? Сервисом или лучше рессивер на запуск создать и пересоздать собственные будильники?
И еще такой момент, есть ряд программ которые чистят память и убивают различные приложения работающие в фоне. Все хорошо, но почему они убивают будильники?? Как это обойти? Спасибо.
0
25.09.2013, 07:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2013, 07:40

AlarmManager и TextView
Здравствуйте. Задача такая: есть AlarmManager и TextView. Как заставить...

Не работает AlarmManager
Суть проблемы в том что когда заеться время уведомления в это время нет.......

AlarmManager + Notification
Взялся за создания Нотификаций в определённое время. До этого такого ещё такого...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru