0

当我没有声明时,AlarmManager 可以完美运行,cancel但在声明 .. 时不会触发cancel。这是代码:

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不会触发……提前致谢!:)

4

1 回答 1

0

将行更改am1.cancel(pi);am1.cancel(pi1);- 您正在取消原来的PendingIntent

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

于 2012-04-26T02:58:10.627 回答