3

我正在使用AlarmManager周期性后台任务:检查AlarmManager任务正在进行

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10 * 60 * 1000, pendingIntent); 

我把标志PendingIntent.FLAG_UPDATE_CURRENT,但如果我再次运行该代码,我害怕它重新写我的日程安排。问题:

  • 它会重置时间,我将不得不等待10分钟才能收到事件吗?
  • 有没有办法检查我的报警任务计划是否已设置?

回答

1

它会重置时间,我将不得不等待10分钟才能收到一个事件吗?

是的。按照Doc:

如果已经有安排在同IntentSender报警时,它会首先取消

而且按照

有没有一种方法来检查,如果我报警的任务计划设置?

是的,there is几种解决方案,你可以检查。

而且,顺便说一句,请注意,setRepeating不精确

注意:从API 19开始,所有重复报警都是不精确的。如果您的应用程序需要精确的交付时间,那么它必须使用一次性精确警报,如上所述每次重新安排时间。其targetSdkVersion早于API 19的传统应用程序将继续拥有其所有警报,包括重复警报,并将其视为确切对待。

相关问题