17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 338
|
||||||||||||||||
1 | ||||||||||||||||
Alarm не срабатывает через заданный промежуток времени01.02.2018, 21:29. Показов 2002. Ответов 1
Метки нет (Все метки)
Всех приветствую. Мне нужно написать будильник. Для решения этой задачи я решил использовать класс alarm,поскольку,как я понял,он лучше всего подходит для этого. Сразу скажу,что у меня api 24 (Седьмой андроид). Когда я устанавливаю будильник методом setAlarm(),отлавливая при этом соответствующий интент в ресивере,почему-то при первой загрузке приложения будильник срабатывает где-то через минуту,хотя он должен сработать сразу же при запуске активити,а когда я ставлю повторяющийся будильник,он тоже срабатывает с более длинным интервалом,чем я хочу,т.е интервал гораздо больше 5 секунд. Может я вообще зря использую alarm и для будильника лучше использовать какой-нибудь timer или делать задержки и выполнять алгоритм в отдельном потоке? Таймер мне не нравится,поскольку минимальное значение,с которым он работает,это одна секунда,а системное время отображается в миллисекундах. Таким образом,если,к примеру,пользователь поставит будильник на 11 часов (3960000 секунд),а таймер будет запущен,к примеру,в десять часов и одна миллисекунда,он пропустит время 11 часов 0 миллисекунд,а значит будильник не сработает. Конечно,можно проверять не то,равно ли системное время времени,указанное пользователем,находится ли разность между системным временем и временем,указанным пользователем в интервале [0,1000) миллисекунд,но тогда будильник сработает не очень точно. Что касается второго варианта,так код получится слишком громоздкий и возможно придётся использовать несколько потоков,хотя я и не уверен в этом. В общем подскажите пожалуйста,почему будильник при запуске activity срабатывает и повторяется с очень большой задержкой,хотя он должен повторяться 5 секунд? Может всё же я зря использую класс alarm? Ещё подскажите пожалуйста,как более точно и правильно отсчитать минуту (время,которое будет работать будильник),чтобы потом отработал мой алгоритм. Заранее всем огромное спасибо за помощь. Ниже будет код моей активити,ресивера и манифеста.
MainActivity.java [JAVA]package ru.kav.alarm; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Toast; import ru.kav.alarm.AlarmReceiver; import ru.kav.alarm.AlarmReceiver; import ru.kav.alarm.R;
0
|
01.02.2018, 21:29 | |
Ответы с готовыми решениями:
1
Периодический alarm не срабатывает Выполнение действий через заданный промежуток времени Выполнить действие через заданный промежуток времени Таймер (выполнение кода через заданный промежуток времени) |
17 / 5 / 0
Регистрация: 16.04.2016
Сообщений: 338
|
||||||
05.02.2018, 19:33 [ТС] | 2 | |||||
Всех приветствую. Проблема была с моим интентом. Я не думал,что это сработает,но теперь будильник корректно срабатывает даже при первой загрузке активити. Теперь хотелось бы уточнить,как корректно отследить минуту,чтобы через минуту выполнить нужные действия и как вычислять дату и время для alarm,чтобы подставить это значение в методе setExact,т.е как поставить будильник на abc,где a - дата срабатывания будильника,b - час срабатывания будильника,а c - минута срабатывания будильника. Я знаю,что вроде можно для этого работать с timePicker и с календарём,но я не собираюсь добавлять в интерфейс моего приложения этот элемент,поэтому может можно обойтись без timePicker? За ранее благодарю всех за помощь. А решение моей проблемы оказалось очень простым,т.е нужно при создание интента добавить всего одну строчку. Честно говоря не думал,что решение этой пустяковой проблемы у меня займёт несколько дней. Просто я вообще думал,что дело в alarm. Для меня не понятно,почему без этого флага возникает эта проблема. Вот строчка,которая решает эту проблему:
0
|
05.02.2018, 19:33 | |
05.02.2018, 19:33 | |
Помогаю со студенческими работами здесь
2
Вход на страницу и её закрытие через заданный промежуток времени автоудаление определенной папки через заданный промежуток времени Смена картинок из папки через заданный промежуток времени Ttimer смена интервала через заданный промежуток времени Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |