当我没有声明cancel
但是当我声明cancel
时没有触发时,AlarmManager工作正常。
这是代码:
Calendar c= Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 37);
c.set(Calendar.SECOND, 0);
Toast.makeText(this, c.getTime().toString(), Toast.LENGTH_LONG).show();
intent = new Intent(TestAlarm.this, TestAlarmService.class);
pi = PendingIntent.getService(TestAlarm.this, 1, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
和cancel
代码:
c.add(Calendar.HOUR_OF_DAY, 0);
c.add(Calendar.MINUTE, 38);
c.add(Calendar.SECOND, 0);
PendingIntent pi1=PendingIntent.getService(TestAlarm.this, 1, intent, 0);
AlarmManager am1 = (AlarmManager) getSystemService(ALARM_SERVICE);
//stopService(intent);
am1.cancel(pi);
现在我想开始我的AlarmManager
在12:37开始和cancel
一两分钟后......但每当我使用cancel
代码时{{1}永远不会发火......
提前致谢! :)
答案 0 :(得分:0)
将行am1.cancel(pi);
更改为am1.cancel(pi1);
- 您取消原来的PendingIntent
此外,在您的取消代码中,您正在调用c.add()
(添加到当前日期/时间)而不是c.set()
(明确设置下一个日期/时间)。通过调用c.add(Calendar.MINUTE, 38)
,您实际上将38分钟添加到当前日历,而不是将时间设置为12:38;