我正在尝试使用AlarmManager来完成重复任务。我正在使用setInexactRepeating()并将间隔设置为每15分钟(仅用于测试目的)但是,它似乎不起作用。有什么想法吗?
这是我的代码:
AlarmReceiver
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.w("CacheCrusader", "Recurring Job: Clearing Cache");
}
}
设置器
private void setRecurringAlarm(Context context) {
Calendar updateTime = Calendar.getInstance();
updateTime.set(Calendar.HOUR_OF_DAY, 20);
updateTime.set(Calendar.MINUTE, 15);
Intent downloader = new Intent(context, AlarmReceiver.class);
PendingIntent recurringDownload = PendingIntent.getBroadcast(context,
0, downloader, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarms = (AlarmManager) getSystemService(
Context.ALARM_SERVICE);
alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP,
updateTime.getTimeInMillis(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES, recurringDownload);
}
设置Setter的代码
Context context = getApplicationContext();
setRecurringAlarm(context);
Android Manifest声明
<receiver android:name=".receiver.AlarmReceiver"></receiver>
在logcat中没有产生错误......警报永远不会触发。
答案 0 :(得分:1)
嗯,这是不准确的......如果你把间隔设置为15分钟,你必须等待至少半小时才能确定它已经/没有被解雇。 在之后设定的开始时间(20:15)。尝试用1分钟的间隔进行测试。并且,如果您需要更可靠的计划,请使用setRepeating()
或可能set()
,其中每个警报调用都会注册下一个警报调用。