Я хочу запустить функцию 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. Кроме того, мне нужно запустить его как службу, поэтому, если приложение будет завершено, оно все равно будет работать?
Спасибо!
Большое спасибо за объяснение, но, как его использовать? если я хочу запустить определенную функцию, когда будильник погаснет, как я могу это сделать? – Amit
Если вы ищете пример, демонстрирующий использование «AlarmManager», посмотрите на это: http://stackoverflow.com/questions/4459058/alarm-manager-example – Kristopher
@Amit: вы не запускаете конкретный когда будильник погаснет ". Вы либо начинаете действие, отправляете команду службе, либо отправляете широковещательную передачу. Вам нужно выбрать, какой из этих трех вариантов вам нужен, а затем настроить «PendingIntent» для этой операции. Если ваш код из 'foo()' идет, зависит от того, какой из этих трех параметров вы выбрали, и других характеристик, например, используете ли вы будильник типа '_WAKEUP'. Использование 'AlarmManager' правильно довольно сложное (глава моей книги о нем составляет ~ 30 страниц) и выходит за рамки одного ответа StackOverflow. – CommonsWare