Smu*_*ler 7 android alarmmanager android-alarms android-5.0-lollipop
API 21中有一个新的AlarmManager.setAlarmClock(...)方法,它设置一个新的警报并显示一个状态栏警报图标.
我这样使用它:
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(ALARM_ALERT_ACTION);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
am.setAlarmClock(new AlarmManager.AlarmClockInfo(time, sender), sender);
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何取消此警报,因为此代码不起作用:
am.cancel(PendingIntent.getBroadcast(context, 0, new Intent(ALARM_ALERT_ACTION), PendingIntent.FLAG_CANCEL_CURRENT));
Run Code Online (Sandbox Code Playgroud)
警报本身被取消(我的BroadcastReceiver的onReceive未被调用)但状态栏警报图标仍然显示,并且AlarmManager.getNextAlarmClock()也返回此警报.
Com*_*are 13
PendingIntent.FLAG_CANCEL_CURRENT说"取消当前PendingIntent".这混淆了AlarmManager,当你去cancel()了,并且困惑AlarmManager从来都不是一件好事.
只有PendingIntent.FLAG_CANCEL_CURRENT在您有明确理由的情况下才能使用.不要将它用作某些默认值,"哦,我会用它代替0,因为我喜欢输入很多字符"的价值.:-)
| 归档时间: |
|
| 查看次数: |
4600 次 |
| 最近记录: |