Android AlarmManager的取消
16lz
2021-01-23
取消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("111111"); // 创建PendingIntent对象 PendingIntent pi = PendingIntent.getActivity( AlarmTest.this, 0, intent, 0); 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);
更多相关文章
- Rexsee API介绍:Android屏幕锁定,Keyguard函数与扩展源码
- android bundle 对象 序列化
- 用kotlin打印出漂亮的android日志(三)——基于责任链模式打印任
- Android 平台上,界面元素在定时器的响应函数里刷新。
- android实现Parcelable序列化对象
- Android Intent传递对象和集合
- Android Audio代码分析17 - setvolume函数
- android intent 传递对象需要序列化实现Parcelable接口