2.设置闹钟
//设置闹钟
Intent intent = new Intent(AlarmManagerActivity.this, AlarmActivity.class);
//获取显示闹钟的PendingIntent
//PendingIntent是对Intent的描述,主要用来处理即将发生的事情,这个Intent会由其他程序进行调用,这里是由闹钟调用
PendingIntent pendingIntent = PendingIntent.getActivity(AlarmManagerActivity.this, 0, intent, 0);
//获取AlarmManager对象
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
//获取日历对象
Calendar c = Calendar.getInstance();
//设置闹钟的小时数
c.set(Calendar.HOUR_OF_DAY, timePicker.getHour());
//设置闹钟的分钟数
c.set(Calendar.MINUTE, timePicker.getMinute());
//设置闹钟的秒数
c.set(Calendar.SECOND, 0);
//第一个参数:闹钟类型
//ELAPSED_REALTIME:在指定的延时后提醒(不唤醒系统)
//ELAPSED_REALTIME_WAKEUP:在指定的延时后提醒(唤醒系统)
//RTC:到达指定时间提醒(不唤醒系统)
//RTC_WAKEUP:到达指定时间提醒(唤醒系统)
//第二参数:指定时间,获取日历对象对应时间的毫秒数
//第三个参数:用于指定当闹钟唤醒时,所指定的页面
alarm.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
java
给app设置定时提醒的功能,典型的例子有闹钟,AlarmManager是Android系统级的服务,原理相当的简单,当你设定一个时间,然后在到达时候后,系统触发一个广播,然后广播通过PendingIntent来达到最终目的。

AlarmManager有三个常用的方法:
(1):设置一次性闹钟:
AlarmManager.set(int type,long startTime,PendingIntent pendingIntent );
(2):该方法用于设置重复闹钟:
setRepeating(int type,long startTime,long intervalTime,PendingIntent pendingIntent );
(3):该方法也用于设置重复闹钟:
setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pendingIntent );

参数:int type: 闹钟的类型,常用的有5个值
分别是:
a: AlarmManager.ELAPSED_REALTIME 表示闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始),状态值为3;

b:AlarmManager.ELAPSED_REALTIME_WAKEUP 表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟也使用相对时间,状态值为2;

c:AlarmManager.RTC 表示闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间,状态值为1;

d:AlarmManager.RTC_WAKEUP 表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0;

e:AlarmManager.POWER_OFF_WAKEUP 表示闹钟在手机关机状态下也能正常进行提示功能,所以是5个状态中用的最多的状态之一,该状态下闹钟也是用绝对时间,状态值为4。

参数:long startTime 闹钟开始时间,以毫秒为单位;

参数:PendingIntent pendingIntent:设定闹钟的动作,可以是Activity,BroadcastReceiver 等。

参数:long intervalTime:在第二个方法中指,两次闹钟的间隔时间,相等间隔;在第三个方法中也指两次闹钟间隔时间,不相等时间;

现在就可以设置闹钟了:
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
1.定义一个广播RemindReceiver.java用来接收系统提醒

2.AndroidManifest.xml中注册这个广播

3.添加一个提醒: alarmManager.set

在AlarmManager类里面有几个常量,定义了闹钟的唤醒方式

AlarmManager.ELAPSED_REALTIME: 采用的时间值一个相对值,以机器的开机时间为0时间点,假如到了设定的时间点但是机器是息屏状态时,闹钟服务无法执行。

AlarmManager.ELAPSED_REALTIME_WAKEUP:采用的时间值和ELAPSED_REALTIME相同,但是可以在息屏状态下唤醒机器。

AlarmManager.RTC:采用的时UTC时间,即与机器的开机时间无关。无法在息屏状态下运行服务。

AlarmManager.RTC_WAKEUP:在RTC的前提下增加了息屏唤醒的功能。

时间转化及其格式转化

 Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(reminderTime);int month = calendar.get(Calendar.MONDAY);calendar.add(Calendar.MONDAY,1);int month1 = calendar.get(Calendar.MONDAY);android.util.Log.e("fangjian","month="+month+" month1="+month1);/*2          * 1、先给定一个时间,例如2017年1月1日3          */4         Calendar cld = Calendar.getInstance();5         cld.set(Calendar.YEAR, 2017);6         cld.set(Calendar.MONDAY,0);7         cld.set(Calendar.DATE,1);8         9         //调用Calendar类中的add(),增加时间量
10         cld.add(Calendar.DATE, 100);//当前时间
new Date()
System.currentTimeMillis();    SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
String a0 = dateformat0.format(new Date());
System.out.println("时间1:" + a0);
今天  :2013-02-06 11:01:10 星期三Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
Date d2 = new Date(c.getTimeInMillis());
星期一:2013-02-04 11:01:10 星期一

Android AlarmManager相关推荐

  1. android alarmmanager进程,Android中使用AlarmManager需注意设置进程属性

    Android中使用AlarmManager需注意设置进程属性 在Android中,AlarmManager提供了不受休眠状态的系统定时功能,其一般使用方法如下. 1.创建一个BroadcastRec ...

  2. android定时循环,Android AlarmManager实现定时循环后台任务

    这篇文章使用AlarmManager实现了Android定时后台循环任务.使用场景:项目需要app每隔一段时间就去服务端请求一次接口,从而更新本地保存的信息. AlarmManager简介 Alarm ...

  3. android alarmmanager定时任务,AlarmManager 实现定时任务

    因为自己项目需要一个计时任务,考虑到种种原因,项目大概需要的是这样的 只要进程不被杀死,每间隔30分钟向后台发送一次服务,将地图的地位点发送到后台,考虑到如果用handler 和Thread的或者是T ...

  4. Android AlarmManager实现不间断轮询服务

    在消息的获取上是选择 轮询还是推送得根据实际的业务需要来技术选型,例如对消息实时性比较高的需求,比如微博新通知或新闻等那就最好是用推送了.但如果只是一般的消息检测比如 更新检查,可能是半个小时或一个小 ...

  5. Android AlarmManager设置多个定时事件时只最后一个有效问题解决

    最近用到了AlarmManager,遇到了问题,当我设置多个定时器时,发现只有一个起作用,百思不得其解,后来在网上找到了原因,把人家的解决办法贴上: AlarmManager的常用方法有三个: (1) ...

  6. Android AlarmManager广播接收器和服务

    In this tutorial, we'll be discussing AlarmManager and Broadcast Receiver and see how to trigger a B ...

  7. android AlarmManager详解,Alarm的设定和取消。

    设定alarm的话,大概需要用到如下几步: 1.创建一个Intent 2.创建一个PendingIntent 3.得到ALARM_SERVICE的AlarmManager 4.使用AlarmManag ...

  8. android AlarmManager实现定时器

    能实现定时器的方法有好几种,而利用AlarmManager发送广播的方式实现相对来说还是很靠谱的,长期在后台运行会被系统列入高耗电APP,系统会自动停掉广播的发送,除非把APP加入系统白名单,上代码: ...

  9. android alarmmanager定时任务,AlarmManager 定时任务详解

    功能说明 设置一个在未来的某个时间运行应用的PendingIntent 或者OnAlarmListener 即使设备已经进入睡眠已设置的闹铃也会被保持 只有当设备关闭或是重启的时候会被清除 Alarm ...

最新文章

  1. 【dp】noip2000提高组 乘积最大
  2. android使用桢布局,Android性能优化UI篇
  3. ibm服务器虚拟化报价,IBM x86 服务器虚拟化服务.pdf
  4. 【python】路径前添加 r表示不转义
  5. mysql5.5表的创建源码_mysql5.5 源码安装
  6. 征信一个月查40次,还能贷款吗?
  7. android aop静态方法,spring aop 不能对静态方法进行增强解决
  8. 理解认证_授权_以及会话_Spring Security OAuth2.0认证授权---springcloud工作笔记110
  9. Mybatis自定义分布式二级缓存实现与遇到的一些问题解决方案!
  10. 考研复习(8)-图的基本操作
  11. 修复win7便签功能
  12. 自动弹琴助手使用及制谱教程
  13. har2case接口脚本必备工具
  14. 小程序开发教程,适合小白哦
  15. 易观千帆 | 2022年11月银行APP月活跃用户规模盘点
  16. Type-C口充电器头为什么没有电压输出?
  17. 手把手学习Vue3.0:CSS样式基础和HTML5基础收藏
  18. 《幕后产品:打造突破式产品思维》读书笔记
  19. 4.基于NIO的群聊系统
  20. 换帅缘于投入 SAP中国新总裁上手仍需时间

热门文章

  1. python 比价_爬虫+网站开发实例:电影票比价网
  2. .Net 配置系统入门
  3. doraemon的python(大更新) django静态文件的配置(出错多的地方)
  4. 2020年汽车芯片行业深度报告-1
  5. 未来科学大奖迎首位女性得主:密码学家王小云获百万美元奖金
  6. 微软股价创新高,突破300美元!我入职后,股票翻了10倍!
  7. 东北大学应用数理统计第三章知识点总结——假设检验
  8. jenkins执行远程服务器命令返回code127解决办法
  9. python treeview insert_pythonttkinter Treeview添加图像作为列值
  10. 电子商务html语言,电子商务师网页设计与制作试题(1)