У меня есть класс, расширяющий приложение. В классе я делаю вызов AlarmManager и передаю намерение. По плану мой класс EventReceiver, который расширяет BroadcastReceiver, обрабатывает вызов в методе onReceive. Как я могу снова называть намерение методом onReceive для планирования другого события?Планирование повторяющейся тревоги/события
0
A
ответ
0
Вы можете использовать setRepeating()
вместо set()
, чтобы он автоматически возвращался. Или просто создайте еще PendingIntent
на эквиваленте Intent
(такое же действие, такое же Uri
, тот же компонент и т. Д.). Каждый раз вам не нужен оригинальный объект PendingIntent
.
0
final Intent intent = new Intent(context, YourService.class);
final PendingIntent pending = PendingIntent.getService(context, 0, intent, 0);
final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pending);
long interval = 30000;//milliseconds
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),interval, pending);
Более полный образец можно найти в приложении образца Photostream http://code.google.com/p/apps-for-android/.
Я не верю, что могу использовать набор, повторяющийся, так как времена будут меняться, и мне нужно получить следующее в моей очереди. Было бы неплохо, если бы существовал способ использовать те же самые намерения и события расписания, которые происходят при изменении раз. Например, если у меня есть массив раз, который я бы хотел пройти, и не нужно цепляться за события один за другим. – JDM
Затем используйте несколько немного разных «намерений» и спланируйте их в блоке. Под «немного отличающимися» они должны отличаться больше, чем дополнительными, иначе они будут эквивалентны с точки зрения PendingIntent. Если вы используете «Intent», который указывает компонент (т. Е. Он принимает «Class» как второй параметр для конструктора), то просто вставляйте уникальную строку действий, и это будет сохранять их четкими, но не мешать вашим квитанция. – CommonsWare