我正在使用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分钟才能收到事件吗?
是的,它会的。根据文档:
如果已经为同一IntentSender安排了警报,则首先将取消。
和按照
有没有办法检查我的警报任务计划是否已设置?
是的,there is您可以检查几种解决方案。
而且,顺便说一句,请注意setRepeating
是不精确的。
注意:从API 19开始,所有重复警报都是不精确的。如果您的应用程序需要精确的交付时间,则它必须使用一次性精确警报,并如上所述每次重新安排。 targetSdkVersion早于API 19的旧版应用程序将继续将其所有警报(包括重复警报)视为精确警报。