2012-04-25 58 views
0

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永远不会开火... 在此先感谢! :)

回答

0

改线am1.cancel(pi);am1.cancel(pi1); - 你撤销原PendingIntent

此外,在取消代码,你打电话c.add()(其添加到当前的日期/时间),而不是c.set() (明确设置下一个日期/时间)。通过调用c.add(Calendar.MINUTE, 38),您实际上将38分钟添加到当前日历中,而不是将时间设置为12:38;

+0

谢谢@WATTO,但用它调用的服务不会停止!请告诉我如何知道PendingIntent是否被取消? – 2012-04-26 08:55:05

+0

您在取消代码中使用'c.add()'而不是'c.set()'。这意味着它将当前时间增加38分钟,而不是将当前时间设置为“12:38”。看到我编辑的答案。 – wattostudios 2012-04-27 02:14:31

+0

感谢@WATTO纠正我...... :)但现在,如果我使用'setRepeating',它只会在点击按钮时被解雇......我的问题解决了。谢谢! – 2012-04-27 16:59:28

相关问题