Java 如何在特定时间取消挂起的帐篷?

Java 如何在特定时间取消挂起的帐篷?,java,android,service,alarmmanager,android-pendingintent,Java,Android,Service,Alarmmanager,Android Pendingintent,当我没有声明取消时,AlarmManager工作正常,但当我声明取消时,不会触发。。 代码如下: Calendar c= Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 37); c.set(Calendar.SECOND, 0); Toast.makeText(t

当我没有声明
取消时,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);
取消
代码:

 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);
现在,我想在12:37启动我的
AlarmManager
并在一两分钟后取消
cancel
,但是每当我使用
cancel
代码时,
AlarmManager
从不触发。。。
提前感谢!:)

更改行
am1.取消(pi)
am1.取消(pi1)-您正在取消原始的
pendingent


另外,在取消代码中,您正在调用
c.add()
(添加到当前日期/时间)而不是
c.set()
(显式设置下一个日期/时间)。通过调用
c.add(Calendar.MINUTE,38)
,实际上是将38分钟添加到当前日历中,而不是将时间设置为12:38

谢谢@WATTO,但是用它呼叫的服务没有停止!请告诉我如何知道挂起内容是否已取消?您在取消代码中使用的是
c.add()
而不是
c.set()
。这意味着在当前时间的基础上增加38分钟,而不是将当前时间设置为“12:38”。查看我编辑的答案。感谢@WATTO纠正我…:)但是现在如果我使用
setRepeating
它只有在我点击按钮时才会被触发…我的问题解决了。谢谢