如何在特定时间取消PendingIntent?
问题描述:
AlarmManager完美的作品时,我还没有宣布cancel
但是当我宣布cancel
.. 这里不火是代码:如何在特定时间取消PendingIntent?
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
代码AlarmManager
永远不会开火... 在此先感谢! :)
答
改线am1.cancel(pi);
到am1.cancel(pi1);
- 你撤销原PendingIntent
此外,在取消代码,你打电话c.add()
(其添加到当前的日期/时间),而不是c.set()
(明确设置下一个日期/时间)。通过调用c.add(Calendar.MINUTE, 38)
,您实际上将38分钟添加到当前日历中,而不是将时间设置为12:38;
谢谢@WATTO,但用它调用的服务不会停止!请告诉我如何知道PendingIntent是否被取消? – 2012-04-26 08:55:05
您在取消代码中使用'c.add()'而不是'c.set()'。这意味着它将当前时间增加38分钟,而不是将当前时间设置为“12:38”。看到我编辑的答案。 – wattostudios 2012-04-27 02:14:31
感谢@WATTO纠正我...... :)但现在,如果我使用'setRepeating',它只会在点击按钮时被解雇......我的问题解决了。谢谢! – 2012-04-27 16:59:28