作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 AlarmManager
中删除警报。我刚刚调用了 AlarmManager.cancel()
,它似乎工作正常。我还应该取消 PendingIntent
吗?为什么?
PendingIntent p; // prepare a pending intent which matches target alarm's intent.
alarmManager.cancel(p);
p.cancel() // should I do that?
最佳答案
切勿将 FLAG_CANCEL_CURRENT 与您在设置警报时使用的 PendingIntents 一起使用。如果您想将闹钟重新安排在不同的时间,则根本不需要任何标志;只需创建一个标志为零的重复 PendingIntent,然后使用它来设置()一个警报:这将隐式取消现有警报,然后将其设置为新指定的时间。但是,如果您在创建新的 PendingIntent 时使用了 FLAG_CANCEL_CURRENT,它会破坏警报管理器识别它与现在已取消的 PendingIntent“相同”的能力,并且您最终会发现旧的挂起,无法交付,占用内存和中央处理器。我已经看到有这个错误的应用程序在系统中堆积了数百个陈旧的警报,足以对性能和内存使用造成明显的影响。
如果您只是想更改附加功能而不实际重新安排现有警报,这就是 FLAG_UPDATE_CURRENT 的用途。如果您想重新安排或取消现有警报,请不要使用任何标志。
关于android - 从AlarmManager中删除报警时,我是否也应该取消PendingIntent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37176218/
我是一名优秀的程序员,十分优秀!