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

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

Войти
Регистрация
Восстановить пароль
 
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
#1

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

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

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

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

Как лучше всего организовать движение textView вниз? - Программирование Android
Среда разработки - Android Studio. Как лучше всего организовать движение textView вниз? Через отдельный поток вызывать хэндлер и там...

Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны) - Программирование Android
Я делаю приложение с увеличением компонентов программно. По такому принципу Кнопка.УстановитьШирину(РазмерЭкранаПоШирине / 10). Но проблема...

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

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

CustomView как организовать скрол? - Программирование Android
Как сделать так что бы CustomView мог скролироваться? Уже все перепробовал. Оборачивал в ScrollView (в этом случае изображение просто не...

Подскажите как правильно организовать работу с БД - Программирование Android
Есть класс DBHelper: public class DBHelper extends SQLiteOpenHelper { public static final String GET_PRICE = "SELECT * from...

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

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

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

Правда я не использовал сервисы, я делал alarm manager + receiver, мне этой комбинации хватило.
Tester64
395 / 356 / 43
Регистрация: 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 часа перегружаться. И не всегда после перезагрузки (тихо в кармане) работает - думал что "сама закрылась". А еще обнаружил что батарейка сильно греется...
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
25.06.2015, 23:42     Как лучше организовать напоминалку? #7
Tester64, вроде как вот это должно ловить такие ситуации
XML
1
android.intent.action.QUICKBOOT_POWERON
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
26.06.2015, 00:21     Как лучше организовать напоминалку? #8
Цитата Сообщение от Spelcrawler Посмотреть сообщение
роде как вот это должно ловить такие ситуации
Я уже почти все перепробовал! (и это тоже) Просто работает, а потом вдруг после очередной перезагрузки не перезапускался сервис слежения (пишу текстовые логи)...
Единственное что придумал (но проект отложен - другие сейчас важнее) - это сделать десяток "вспомогательных" ресиверов контролирующих наличие. Например на смену уровня заряда. Или уровня GSM сигнала...
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
06.07.2015, 16:12  [ТС]     Как лучше организовать напоминалку? #9
Цитата Сообщение от Tester64 Посмотреть сообщение
я не использовал сервисы, я делал alarm manager + receiver, мне этой комбинации хватило
Хочу так тоже попробовать, смотрел вашу прогу - понравилось. Только вот не пойму, как организовать после перезагрузки повторялку. Где после перезагрузки взять время периода повтора?
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
06.07.2015, 16:36     Как лучше организовать напоминалку? #10
Цитата Сообщение от Ханасака Посмотреть сообщение
Где после перезагрузки взять время периода повтора?
В настройках...
При срабатывании ресивера вы попадаете в обработчик. В нем вы решаете что делать дальше - запустить пищалку, вывести сообщение или... ничего не делать!
Допустим вы решили что сработать надо после 8ми утра... запускаете аларм на 8 и ждете... Если сработало - хорошо, если сломалось, можно отловив другой ресивер (перезагрузку) его переустановить. Если сработало дважды, то заглянув в настройки программы можно выяснить что уже в этом периоде запускали и не запускать еще раз...
как-то так...
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
06.07.2015, 16:39  [ТС]     Как лучше организовать напоминалку? #11
Цитата Сообщение от Tester64 Посмотреть сообщение
В настройках...
Как получить preferences из broadcast reciver?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2015, 18:00     Как лучше организовать напоминалку?
Еще ссылки по теме:

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

Как организовать передачу данных между JS и Studio? - Программирование Android
JS лежит внутри asset/www/файл. Нужно чтоб ПЕРЕД загрузкой файлика в WebView в него передавались некие переменные. Еще бы уметь получать...

Как по уму организовать циклическую работу службы? - Программирование Android
Привет. Для реализации циклических действия в фоне я делаю так: public class Server extends IntentService { ...

Как организовать сохранение данных при регистрации - Программирование Android
Здравствуйте! Делаю регистрационную форму. Регистрация состоит из нескольких частей: 1 ФИО и контакты 2 Дополнительная информация ...

Как организовать повторение будильника через setExact()? - Программирование Android
Добрый день! Нужно организовать ТОЧНЫЙ повторяющийся будильник методом setExact(). Я пробовал так AlarmManager am = (AlarmManager)...


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

Или воспользуйтесь поиском по форуму:
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
10.07.2015, 18:00  [ТС]     Как лучше организовать напоминалку? #12
Цитата Сообщение от dajver Посмотреть сообщение
Правда я не использовал сервисы, я делал alarm manager + receiver, мне этой комбинации хватило
Удивительная штука. На телефоне стояла модифицированная прошивка miui под jiayu g4 advanced. AlarmManager тупо отказывался работать (из 10 попыток вызывался может 1 раз). Специально для этой цели перепрошил на оригинальную - аларм срабатывает как часы на любой период отсрочки сигнала(правда он у меня всего один, но для целей моей проги пока хватит). Вот уж не ожидал от прошивки такого подвоха
Yandex
Объявления
10.07.2015, 18:00     Как лучше организовать напоминалку?
Ответ Создать тему
Опции темы

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