全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android实现每天定时提醒功能

这个是设置定时提醒的功能,即设置几点几分后提醒,用的是给系统设置个时间点,当系统时间到达设置的时间点的时候就会给我们发送一个广播,然后达到时间提醒功能

网上找了很多,遇到了很多坑,经过摸索出来的,比如下面设置重复时间的第二个参数,网上有很多说是执行提醒延时多少毫秒执行,我用的刷了MIUI的三星手机测试怎么都不对,经过摸索测试才发现,原来不是,原来那个参数是设定的时间点的毫秒值!好了,不多说,看代码:

/**
 * 开启提醒
 */
 private void startRemind(){
   //得到日历实例,主要是为了下面的获取时间
   mCalendar = Calendar.getInstance();
   mCalendar.setTimeInMillis(System.currentTimeMillis());
   //获取当前毫秒值
   long systemTime = System.currentTimeMillis();
   //是设置日历的时间,主要是让日历的年月日和当前同步
   mCalendar.setTimeInMillis(System.currentTimeMillis());
   // 这里时区需要设置一下,不然可能个别手机会有8个小时的时间差
   mCalendar.setTimeZone(TimeZone.getTimeZone("GMT+8"));
   //设置在几点提醒 设置的为13点
   mCalendar.set(Calendar.HOUR_OF_DAY, 13);
   //设置在几分提醒 设置的为25分
   mCalendar.set(Calendar.MINUTE, 25);
   //下面这两个看字面意思也知道
   mCalendar.set(Calendar.SECOND, 0);
   mCalendar.set(Calendar.MILLISECOND, 0);
   //上面设置的就是13点25分的时间点
   //获取上面设置的13点25分的毫秒值
   long selectTime = mCalendar.getTimeInMillis();

   // 如果当前时间大于设置的时间,那么就从第二天的设定时间开始
   if(systemTime > selectTime) {
     mCalendar.add(Calendar.DAY_OF_MONTH, 1);
   }
  //AlarmReceiver.class为广播接受者
   Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
   PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
   //得到AlarmManager实例
   AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
  //**********注意!!下面的两个根据实际需求任选其一即可*********
   /**
   * 单次提醒
   * mCalendar.getTimeInMillis() 上面设置的13点25分的时间点毫秒值
   */
   am.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), pi);

   /**
   * 重复提醒
   * 第一个参数是警报类型;下面有介绍
   * 第二个参数网上说法不一,很多都是说的是延迟多少毫秒执行这个闹钟,但是我用的刷了MIUI的三星手机的实际效果是与单次提醒的参数一样,即设置的13点25分的时间点毫秒值
   * 第三个参数是重复周期,也就是下次提醒的间隔 毫秒值 我这里是一天后提醒
   */
   am.setRepeating(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), (1000 * 60 * 60 * 24), pi);
 }
/**
 * 关闭提醒
 */
 private void stopRemind(){
   Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
   PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,
       intent, 0);
   AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
   //取消警报
   am.cancel(pi);
   Toast.makeText(this, "关闭了提醒", Toast.LENGTH_SHORT).show();
 }

上面第一个参数的详解:

AlarmManager.RTC,硬件闹钟,不唤醒手机(也可能是其它设备)休眠;当手机休眠时不发射闹钟。

AlarmManager.RTC_WAKEUP,硬件闹钟,当闹钟发躰时唤醒手机休眠;

AlarmManager.ELAPSED_REALTIME,真实时间流逝闹钟,不唤醒手机休眠;当手机休眠时不发射闹钟。

AlarmManager.ELAPSED_REALTIME_WAKEUP,真实时间流逝闹钟,当闹钟发躰时唤醒手机休眠;

RTC闹钟和ELAPSED_REALTIME最大的差别就是前者可以通过修改手机时间触发闹钟事件,后者要通过真实时间的流逝,即使在休眠状态,时间也会被计算。

然后写广播接受者:

public class AlarmReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    //当系统到我们设定的时间点的时候会发送广播,执行这里
  }
}

最后别忘了给广播接受者配置清单文件:

<receiver
  android:name=".receiver.AlarmReceiver"
  android:process=":remote"
  />

使用方法就直接调用启动提醒或关闭提醒就行

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# android  # 每天定时提醒  # 定时提醒  # 定时提醒功能  # Android4.4开发之电池低电量告警提示原理与实现方法分析  # Android后台定时提醒功能实现  # Android基于广播事件机制实现简单定时提醒功能代码  # android获取情景模式和铃声 实现震动、铃声提醒  # 详解Android中Notification通知提醒  # Android编程设置提醒事件的方法  # Android高仿微信5.2.1主界面及消息提醒  # Android提醒微技巧你真的了解Dialog、Toast和Snackbar吗  # Android 开发之Dialog  # Toast  # Snackbar提醒  # Android开发之使用通知栏显示提醒信息的方法  # Android编程实现添加低电流提醒功能的方法  # 的是  # 第一个  # 我用  # 第二个  # 几分  # 几点  # 网上  # 三星手机  # 刷了  # 就会  # 会有  # 好了  # 也会  # 有很多  # 第二天  # 给我们  # 这两个  # 就行  # 可以通过  # 才发现 


相关文章: 建站之星如何快速解决建站难题?  如何用IIS7快速搭建并优化网站站点?  定制建站方案优化指南:企业官网开发与建站费用解析  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何快速查询域名建站关键信息?  如何做网站制作流程,*游戏网站怎么搭建?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何在宝塔面板中修改默认建站目录?  XML的“混合内容”是什么 怎么用DTD或XSD定义  建站主机默认首页配置指南:核心功能与访问路径优化  南宁网站建设制作定制,南宁网站建设可以定制吗?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  家庭建站与云服务器建站,如何选择更优?  高端网站建设与定制开发一站式解决方案 中企动力  免费视频制作网站,更新又快又好的免费电影网站?  实例解析Array和String方法  北京制作网站的公司,北京铁路集团官方网站?  ,网站推广常用方法?  如何快速搭建FTP站点实现文件共享?  如何在宝塔面板中创建新站点?  如何在建站宝盒中设置产品搜索功能?  建站之星会员如何解锁更多建站功能?  网站图片在线制作软件,怎么在图片上做链接?  高端建站三要素:定制模板、企业官网与响应式设计优化  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  如何通过.red域名打造高辨识度品牌网站?  建站主机选虚拟主机还是云服务器更好?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  建站之星如何实现五合一智能建站与营销推广?  javascript中对象的定义、使用以及对象和原型链操作小结  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  已有域名能否直接搭建网站?  建站之星安装后如何配置SEO及设计样式?  如何挑选优质建站一级代理提升网站排名?  如何确保FTP站点访问权限与数据传输安全?  网站制作企业,网站的banner和导航栏是指什么?  如何在Tomcat中配置并部署网站项目?  建站之星如何实现PC+手机+微信网站五合一建站?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何快速启动建站代理加盟业务?  建站之星下载版如何获取与安装?  如何用低价快速搭建高质量网站?  如何彻底删除建站之星生成的Banner?  如何制作网站标识牌,动态网站如何制作(教程)?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  攀枝花网站建设,攀枝花营业执照网上怎么年审? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。