Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Ханасака
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147
#1

Как лучше организовать напоминалку?

23.06.2015, 12:49. Просмотров 851. Ответов 11
Метки нет (Все метки)

Здравствуйте!
Вот думаю написать прогу-напоминалку. Обязательно должна быть ф-ция отправки уведомлений в заданное время (или срабатывания как будильник). Имеется необходимость настроить периодичность напоминаний. Например в заданное время каждый день сервис проверяет задания по базе и в случае каких-то совпадений выдаст уведомление или сигнал, как в будильнике.
Вопрос: каким методом лучше это делать? В какую сторону копать? Пробовал в сервис вынести таймер и в случае совпадения с заданным временем - отправлять уведомление. Проблема: не всегда почему-то будит устройство, но срабатывает при активном. Читал про AlarmManager, но поговаривают, что не шибко надежен, и бывают глюки в его работе. Напрашивается также вопрос: а как же организован стандартный будильник-то?
Вобщем, буду благодарен за любую подсказку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2015, 12:49
Ответы с готовыми решениями:

Как лучше организовать массив String[] из 60 элементов?
Здравствуйте! Как лучше организовать массив String из 60 элементов? Речь идёт...

Как лучше всего организовать движение textView вниз?
Среда разработки - Android Studio. Как лучше всего организовать движение...

Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны)
Я делаю приложение с увеличением компонентов программно. По такому принципу...

Как организовать сервис?
Здравствуйте! Подскажите пожалуйста, как лучше организовать сервис, который...

CustomView как организовать скрол?
Как сделать так что бы CustomView мог скролироваться? Уже все перепробовал....

11
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
23.06.2015, 22:48 #2
Цитата Сообщение от Ханасака Посмотреть сообщение
Читал про AlarmManager, но поговаривают, что не шибко надежен
Сам пока обижен на андроид за это... они ВСЕ не надежны! Сервис работает всегда, но... иногда его убивают освобождая память. Иногда устройство может перегрузиться и сервис не восстанавливается. Вроде можно повысить устойчивость сервиса приоритетом, но не проверял. АлармМенеджер вроде ВСЕГДА срабатывает, но не всегда в спящем режиме получает достаточно прав для действий. Разбудить телефон - это вообще особая проблемма - надо использовать особые функции управления питанием.
0
Ханасака
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147
23.06.2015, 23:35  [ТС] #3
Может быть поэтому в гугле практически нету работающих примеров будильников, напоминалок и пр.? Однако, где же найти информацию по этому вопросу?
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
24.06.2015, 00:54 #4
Цитата Сообщение от Ханасака Посмотреть сообщение
Однако, где же найти информацию по этому вопросу?
Боюсь что нигде! Я уже 2й год мечтаю сделать человеческую напоминалку... Математика давно готова, а с будильником сплошная лажа... аж забросил проект!

Сделал неубиваемый сервис, считающий секунды до срабатывания. Почти неубиваемый. Крайне сложный... Но при частых проверках, от потребляет до 20-50% процессора (раньше было до 80-90%) - батарейка быстро умирает.
Можно воспользоваться алармом - тогда по идее сработает ВСТРОЕННЫЙ будильник. Но не сработает с опазданием, если ему что-то помешало.
Я испробовал десятки будильников - ВСЕ иногда не срабатывают!!! Даже системный один раз подвел...
1
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
24.06.2015, 13:01 #5
Не знаю как вы это воспримите но я походу не один такой ) Недавно написал себе напоминалку
ссылка на прогу
https://play.google.com/store/apps/details?id=dajver.com.remindme#

Делал с помощью аларм менеджера, все круто работает без всяких проблем. Можете делать смело с ним, плюс у него есть прекрасная штука, называется BOOT_COMPLETE, это колбек который посылает система если она была перегружена или выключена и включена, и прога автоматом может востанавливать все свои сервисы.

Правда я не использовал сервисы, я делал alarm manager + receiver, мне этой комбинации хватило.
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
25.06.2015, 23:37 #6
Цитата Сообщение от dajver Посмотреть сообщение
плюс у него есть прекрасная штука, называется BOOT_COMPLETE, это колбек который посылает система если она была перегружена или выключена и включена
Увы, бывают перезагрузки, которые не вызывают этот ресивер. Я так и не понял что это, но если телефон перегрелся, занял всю память, сглючил на симке (уже месяц(раньше небыло) у меня на двухсимочном перегружается на звонок на вторую симку - еле успеваю увидеть что звонок на второй и во входящие не успевает записать), раньше часто было если много программ загрузил и почистить не успел. Было при неправильном кодировании когда сервис ежесекундно запускал себя-же и сборщих мусора не успевал убивать или количество алармов (цикличных, а не разовых) плодилось геометрически...
Короче идет перезагрузка, которая даже не требует ввести пароли на сим-карты. Все сервисы убиваются. Востанавливаются только на свои ресиверы (изменение уровня заряда, входящий звонок, смена режима вифи), но ресивер BOOT_COMPLETE в мои программы не приходит (многократно проверил)!

Цитата Сообщение от dajver Посмотреть сообщение
я не использовал сервисы, я делал alarm manager + receiver, мне этой комбинации хватило
Мне этого не хватает! У меня больше 300 напоминаний (внешняя база) которая получается расчетными методами. Надо учитывать и факт срабатывания/показа и факт "не смогли показать - пересчитай, покажи уже/через 5 минут/уже поздно/бесполезно показывать - пересчитай на следующий месяц". А еще надо расчитывать какие будут скоро! И выводить их в нотиф...

Когда-то ПОЧТИ сделал... после того как счастливым проходил почти неделю, вдруг обнаружил что процессор занимает на 100% и память циклично переполняется, заставляя каждые 2-3 часа перегружаться. И не всегда после перезагрузки (тихо в кармане) работает - думал что "сама закрылась". А еще обнаружил что батарейка сильно греется...
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
25.06.2015, 23:42 #7
Tester64, вроде как вот это должно ловить такие ситуации
XML
1
android.intent.action.QUICKBOOT_POWERON
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
26.06.2015, 00:21 #8
Цитата Сообщение от Spelcrawler Посмотреть сообщение
роде как вот это должно ловить такие ситуации
Я уже почти все перепробовал! (и это тоже) Просто работает, а потом вдруг после очередной перезагрузки не перезапускался сервис слежения (пишу текстовые логи)...
Единственное что придумал (но проект отложен - другие сейчас важнее) - это сделать десяток "вспомогательных" ресиверов контролирующих наличие. Например на смену уровня заряда. Или уровня GSM сигнала...
0
Ханасака
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147
06.07.2015, 16:12  [ТС] #9
Цитата Сообщение от Tester64 Посмотреть сообщение
я не использовал сервисы, я делал alarm manager + receiver, мне этой комбинации хватило
Хочу так тоже попробовать, смотрел вашу прогу - понравилось. Только вот не пойму, как организовать после перезагрузки повторялку. Где после перезагрузки взять время периода повтора?
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
06.07.2015, 16:36 #10
Цитата Сообщение от Ханасака Посмотреть сообщение
Где после перезагрузки взять время периода повтора?
В настройках...
При срабатывании ресивера вы попадаете в обработчик. В нем вы решаете что делать дальше - запустить пищалку, вывести сообщение или... ничего не делать!
Допустим вы решили что сработать надо после 8ми утра... запускаете аларм на 8 и ждете... Если сработало - хорошо, если сломалось, можно отловив другой ресивер (перезагрузку) его переустановить. Если сработало дважды, то заглянув в настройки программы можно выяснить что уже в этом периоде запускали и не запускать еще раз...
как-то так...
0
Ханасака
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147
06.07.2015, 16:39  [ТС] #11
Цитата Сообщение от Tester64 Посмотреть сообщение
В настройках...
Как получить preferences из broadcast reciver?
0
Ханасака
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147
10.07.2015, 18:00  [ТС] #12
Цитата Сообщение от dajver Посмотреть сообщение
Правда я не использовал сервисы, я делал alarm manager + receiver, мне этой комбинации хватило
Удивительная штука. На телефоне стояла модифицированная прошивка miui под jiayu g4 advanced. AlarmManager тупо отказывался работать (из 10 попыток вызывался может 1 раз). Специально для этой цели перепрошил на оригинальную - аларм срабатывает как часы на любой период отсрочки сигнала(правда он у меня всего один, но для целей моей проги пока хватит). Вот уж не ожидал от прошивки такого подвоха
0
10.07.2015, 18:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2015, 18:00

Создание БД. Как организовать данные?
Приветствую! Серьезного опыта по созданию БД - 0 xp Я хочу создать две базы...

Как организовать фоновую задачу
Всем привет. Посоветуйте как организовать примерно следующее: у меня есть...

Подскажите, как организовать свое обучения
Начал учить андроид, выучил основы, стало надоедать делать ...


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

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

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