通过广播接收者来实现定时提醒功能

现在各android应用中会在通知栏提示一些应用的通知提醒。当需要在特定时间对用户提醒,可以用service常驻后台来实现定时的提醒。此种方式也存在弊端,比如在miui等国产ui系统下,如果客户手动清理内存可能会导致后台的service被清理掉。一般的小公司很难像腾讯或阿里,能和各ui厂商达成协议,不清理后台进程。所以本文提供另一种方式来实现应用的定时提醒功能,通过广播接收者和AlarmManager来实现。
1.首先在应用内通过请求获取需要提醒的内容信息及提醒时间。将这些数据存储在应用的数据库中。
2.存储数据库后,取一周或一月等特定时间段的数据来设置闹钟。
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALAM_SERVICE);
Intent showIntent = new Intent("com.xxxx.Notify");
Bundle bundle = new Bundle();
budle.putSerializable("notify",notifyEntity);
showIntent.putExtra("bundle",bundle);
PendingIntent pi = PendingIntent.getBroadcast(context,notifyEntity.hashCode(),showIntent,PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEU,notifyEntity.getTime(),pi);
3.拦截一些低频的系统广播,如启动android.intent.action.BOOT_COMPLETED,日期变更android.intent.action.DATE_CHANGED,时间设置android.intent.action.TIME_SET,电量低android.intent.action.BATTERY_LOW,电量正常android.intent.action.BATTERY_OKAY,当接受到这些低频广播取数据库里存的数据重新设置闹钟,过滤掉已提醒的数据。
4.当闹钟时间到了,会发“com.xxxx.Notify”的广播,拦截此广播在通知栏做提醒,并将该条已提醒的数据存入已提醒的数据库中以便后续过滤已提醒数据之用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值