2010-04-26 3 views
0

У меня есть класс, расширяющий приложение. В классе я делаю вызов AlarmManager и передаю намерение. По плану мой класс EventReceiver, который расширяет BroadcastReceiver, обрабатывает вызов в методе onReceive. Как я могу снова называть намерение методом onReceive для планирования другого события?Планирование повторяющейся тревоги/события

ответ

0

Вы можете использовать setRepeating() вместо set(), чтобы он автоматически возвращался. Или просто создайте еще PendingIntent на эквиваленте Intent (такое же действие, такое же Uri, тот же компонент и т. Д.). Каждый раз вам не нужен оригинальный объект PendingIntent.

+0

Я не верю, что могу использовать набор, повторяющийся, так как времена будут меняться, и мне нужно получить следующее в моей очереди. Было бы неплохо, если бы существовал способ использовать те же самые намерения и события расписания, которые происходят при изменении раз. Например, если у меня есть массив раз, который я бы хотел пройти, и не нужно цепляться за события один за другим. – JDM

+0

Затем используйте несколько немного разных «намерений» и спланируйте их в блоке. Под «немного отличающимися» они должны отличаться больше, чем дополнительными, иначе они будут эквивалентны с точки зрения PendingIntent. Если вы используете «Intent», который указывает компонент (т. Е. Он принимает «Class» как второй параметр для конструктора), то просто вставляйте уникальную строку действий, и это будет сохранять их четкими, но не мешать вашим квитанция. – CommonsWare

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/.

Смежные вопросы