在我的Android应用程序中,我正在设置一个警报,我想重复发生,因此使用AlarmManager.setRepeating()。
我不想跟踪警报是否自己设置(听起来像是一个在某些时候容易出现故障的坏主意),并且似乎没有API支持来检查是否已经设置了特定的警报对于给定的意图。
因此,每次我的应用程序激活时,我都会悲观地重置警报:
alarmManager.cancel(pendingIntent);
...
alarmManager.setRepeating(..., pendingIntent);
问题:调用setRepeating()是幂等的,即我是否需要显式取消()任何先前的警报,或者我可以安全地调用setRepeating()并完成它吗?
答案 0 :(得分:3)
如果已经安排了警报 对于同一个IntentSender,它会 首先被取消。
我知道这并不完全清楚,但他们所说的是AlarmManager
会检查您传递给PendingIntent
的{{1}}以及是否已经安排了相同的setRepeating()
{ {1}}然后在安排新警报之前取消该警报。因此,只要您使用的PendingIntent未更改PendingIntent
来自PendingIntent API documentation:
(oldPendingIntent.equals(newPendingIntent) == true)