android 实现每天7点到21点定时提示的功能

功能:实现每天7点到21点定时提示的功能

实现思路:通过AlarmManage设定时间,然后在该时间到来时,AlarmManager发送广播,在自定义的广播接收器中进行提示

碰到的问题 ①:后面的定时器会将前面的定时器"覆盖"掉,只会启动最后一个定时器

                     ②:如果设置一个过去的时间,闹钟立即被触发

问题①解决方法:

PendingIntent.getBroadcast(Context context, int requestCode, Intent intent, int flags);

第二个参数requestCode一定要是唯一的,比如不同的ID之类的(如果系统需要多个定时器的话),而刚开始自己代码 PendingIntent.getBroadcast(MainActivity.this, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT) requestCode设置成0了,导致只会启动最后一个定时器

问题②解决方法:

增加判断:
if(当前时间>你想设置的时间)

 把当前日期加1天.

<span style="color:#333333;">				AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
				for (int i = 7; i <= 21; i++) {
					Intent intent = new Intent(MainActivity.this,
							AlarmReceiver.class);
					intent.setAction("action");
					PendingIntent pendingIntent = PendingIntent.getBroadcast(
							MainActivity.this, </span><span style="color:#ff0000;">i</span><span style="color:#333333;">, intent,
							PendingIntent.FLAG_CANCEL_CURRENT);
					Calendar calendar = Calendar.getInstance();
					long currentTime = calendar.getTimeInMillis();// 获取当前时间
					calendar.set(calendar.HOUR_OF_DAY, i);
					calendar.set(calendar.MINUTE, 0);
					calendar.set(calendar.SECOND, 0);

					/**
					 * 当前时间大于设置的时间,将设置的时间增加一天
					 */
					</span><span style="color:#ff0000;">if (currentTime > calendar.getTimeInMillis()) {
						calendar.add(Calendar.DATE, 1);
					}</span><span style="color:#333333;">

					alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
							calendar.getTimeInMillis(), 1000 * 60 * 60 * 24,
							pendingIntent);
				}
			</span>

项目完整代码:点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值