Android AlarmManager的取消

时间:2022-04-13 06:04:40

取消alarm使用AlarmManager.cancel()函数,传入参数是个PendingIntent实例。

该函数会将所有跟这个PendingIntent相同的Alarm全部取消,怎么判断两者是否相同,android使用的是intent.filterEquals(),具体就是判断两个PendingIntent的action、data、type、class和category是否完全相同。

具体代码如下:

设置闹钟:

                                // 指定启动AlarmActivity组件
Intent intent = new Intent(AlarmTest.this,
AlarmActivity.class);
intent.setAction("");
// 创建PendingIntent对象
PendingIntent pi = PendingIntent.getActivity(
AlarmTest.this, , intent, );
Calendar c = Calendar.getInstance();
// 根据用户选择时间来设置Calendar对象
System.out.println("hourOfDay = " + hourOfDay);
System.out.println("minute = " + minute);
c.set(Calendar.HOUR, hourOfDay);
c.set(Calendar.MINUTE, minute);
// 设置AlarmManager将在Calendar对应的时间启动指定组件
aManager.set(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(), pi);

取消该闹钟:

        //用于取消的
Intent intent = new Intent(AlarmTest.this, AlarmActivity.class);
intent.setAction("111111");
// 创建PendingIntent对象
PendingIntent pendingIntent = PendingIntent.getActivity(
AlarmTest.this, 0, intent, 0);
aManager.cancel(pendingIntent);