Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/28: Рейтинг темы: голосов - 28, средняя оценка - 4.71
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
1

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

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

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

P.S. делал через сервис, но и он засыпает...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2013, 17:37
Ответы с готовыми решениями:

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

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

Когда я пытаюсь редактировать путь сохранения файлов или выбрать директорию, браузер вылетает или попросту "засыпает"
Здравствуйте! У меня возникла такая проблема: каждый раз, когда я пытаюсь редактировать путь...

Нет интернета когда телефон в режиме модема
Играю в одну онлайн-игру. Если пользоваться моим домашним интернетом через Wi-fi то пинг в игре...

15
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
16.04.2013, 17:54 2
Используйте BroadcastReceiver, а не Service
0
325 / 123 / 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
0x5B4C322291BD52AE
96 / 96 / 0
Регистрация: 04.03.2013
Сообщений: 295
16.04.2013, 18:00 4
dubok79, RTC_WAKEUP

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

Добавлено через 8 минут
Цитата Сообщение от dubok79 Посмотреть сообщение
Что значит не пойдет?
Как я писал выше могу ошибать поэтому проверь если не будет работать используй setInexactRepeating или setRepeating. А отлючать будешь используя cancel.
1
325 / 123 / 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
0x5B4C322291BD52AE
96 / 96 / 0
Регистрация: 04.03.2013
Сообщений: 295
16.04.2013, 18:55 10
dubok79, таких явных ошибок не вижу вот тебе подсказка:

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

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

Когда я захожу на свой сайт через мобильный телефон
Когда я захожу на свой сайт через мобилник то он открывает совершенно другой сайт. Пишеш...

Когда и как срабатывает eof() ?
Программа: #include <Windows.h> #include <iostream> #include <fstream> #include <string>...

echo срабатывает, когда не надо
Пытаюсь набить руку под написание пхп кода, но сталкнулся с несколькими ошибками, вот одна из них:...

Javascript срабатывает когда ему хочется
Здравствуйте, проблема в срабатывании скрипта, он то работает то не работает <script...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru