AlarmManager+Notification实现定时通知提醒功能

本文详细介绍了如何利用Android的AlarmManager配合BroadcastReceiver实现定时通知提醒功能,包括周期闹钟、定时闹钟的配置,以及如何取消闹钟和设置多个闹钟。讲解了AlarmManager的类型、间隔时间、PendingIntent的使用,并提到了广播接收器的配置和注册。
摘要由CSDN通过智能技术生成

AlarmManager简介

  AlarmManager实质是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver)。本文将讲解一下如何使用AlarmManager实现定时提醒功能。

闹钟配置

周期闹钟
Intent intent = new Intent();
intent.setAction(GlobalValues.TIMER_ACTION_REPEATING);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5 * 1000, 3 * 1000, sender);
setRepeating(int type,long startTime,long intervalTime,PendingIntent pi)

  该方法用于设置周期性执行的定时服务。type:闹钟类型,startTime:闹钟首次执行时间,intervalTime:闹钟两次执行的间隔时间,pi:闹钟响应动作。

setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi)

  该方法也用于设置周期定式服务,与上一种类似。不过其两个闹钟执行的间隔时间不是固定的。它相对而言更省电一些,因为系统可能会将几个差不多的闹钟合并为一个来执行,减少设备的唤醒次数。

intervalTime内置变量

间隔一天:   INTERVAL_DAY
间隔半天:   INTERVAL_HALF_DAY
间隔15分钟:  INTERVAL_FIFTEEN_MINUTES
间隔半个小时: INTERVAL_HALF_HOUR
间隔一个小时: INTERVAL_HOUR

定时闹钟
//获得系统提供的AlarmManager服务的对象
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
//Intent设置要启动的组件,这里启动广播
Intent myIntent = new Intent();
myIntent.setAction(GlobalValues.TIMER_ACTION);
//PendingIntent对象设置动作,启动的是Activity还是Service,或广播!
PendingIntent sender = PendingIntent.getBroadcast(context, 0, myIntent,0);
//注册闹钟
alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5 * 1000, sender);
set(int type,long startTime,PendingIntent pi)

  该方法用于设置一次性定时服务。type:闹钟类型,startTime:闹钟执行时间,pi:闹钟响应动作。

取消闹钟
Intent myIntent = new Intent();
myIntent.setAction(GlobalValues.TIMER_ACTION);
//myIntent.setAction(GlobalValues.TIMER_ACTION_REPEATING);
PendingIntent sender = PendingIntent.getBroadcast(co
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值