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
它只有在我点击按钮时才会被触发…我的问题解决了。谢谢