2013-11-30 2 views
0

Я хочу запустить функцию foo(), когда диспетчер аварийной сигнализации убегает, но я не понял, как это сделать. Я видел, как вы передали намерение диспетчеру тревоги, есть ли другие способы сделать это?Как запустить функцию, когда Alarm Manager заканчивается?

public void SetAlarm() 
{ 
Calendar cal = Calendar.getInstance(); 
    cal.set(Calendar.HOUR_OF_DAY, 19); 
cal.set(Calendar.MINUTE, 03); 
    cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 

    AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(this, MainActivity.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 
     alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 
} 

Как вы можете видеть, я не уверен, как правильно использовать функцию alarmMgr.set. Кроме того, мне нужно запустить его как службу, поэтому, если приложение будет завершено, оно все равно будет работать?

Спасибо!

ответ

2

Я видел, как вы передать Intent менеджеру сигнализации

Вы передаете PendingIntentAlarmManager в.

Есть ли другие способы сделать это?

Единственный способ использования AlarmManager - с PendingIntent. Цель AlarmManager - предоставить управление приложениями в моменты времени в будущем, когда ваше приложение больше не работает.

Кроме того, мне нужно запустить его как службу, поэтому, если приложение будет завершено, то оно все равно будет работать?

No. Цель AlarmManager специально, чтобы позволить ваш процесс прекращается, но дать вам контроль снова некоторое время в будущем, так что вы не Связывая память все это время.

+0

Большое спасибо за объяснение, но, как его использовать? если я хочу запустить определенную функцию, когда будильник погаснет, как я могу это сделать? – Amit

+0

Если вы ищете пример, демонстрирующий использование «AlarmManager», посмотрите на это: http://stackoverflow.com/questions/4459058/alarm-manager-example – Kristopher

+0

@Amit: вы не запускаете конкретный когда будильник погаснет ". Вы либо начинаете действие, отправляете команду службе, либо отправляете широковещательную передачу. Вам нужно выбрать, какой из этих трех вариантов вам нужен, а затем настроить «PendingIntent» для этой операции. Если ваш код из 'foo()' идет, зависит от того, какой из этих трех параметров вы выбрали, и других характеристик, например, используете ли вы будильник типа '_WAKEUP'. Использование 'AlarmManager' правильно довольно сложное (глава моей книги о нем составляет ~ 30 страниц) и выходит за рамки одного ответа StackOverflow. – CommonsWare

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