本文参考自《第一行代码》

Android中定时任务有两种实现方式:
1、用 Java API 中的 Timer 类;
2、用 Android 的 Alarm 机制;
因为Android手机在长时间不使用时会让CPU自动进入睡眠状态,有可能导致Timer中的定时任务无法正常运行;
Alarm 机制则不存在这个问题,它具有CPU唤醒功能,可以保证每次需要执行定时任务时CPU都能正常工作。

Alarm 机制基本用法
1、获取一个 AlarmManager 实例

AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

2、调用set()方法设置定时任务

long triggerAtTime = SystemClock.elapsedrealtime() + 10 * 1000;
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WEAKUP, triggerAtTime, pendingIntent);

set()有三个参数
Parameters:
type One of ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP, RTC, or RTC_WAKEUP.
triggerAtMillis time in milliseconds that the alarm should go off, using the appropriate clock (depending on the alarm type).
operation Action to perform when the alarm goes off; typically comes from IntentSender.getBroadcast().

type 的四个选择:
ELAPSED_REALTIME:让定时任务的触发时间从系统开机开始算起,但不会唤醒CPU;
ELAPSED_REALTIME_WAKEUP:让定时任务的触发时间从系统开机开始算起,会唤醒CPU;
RTC:让定时任务的触发时间从1970年1月1日0点开始算起,但不会唤醒CPU;
RTC_WAKEUP:让定时任务的触发时间从1970年1月1日0点开始算起,会唤醒CPU;

triggerAtMillis 就是定时任务触发的时间,以毫秒为单位。如果第一个参数使用的是ELAPSED_REALTIME或ELAPSED_REALTIME_WAKEUP,则这里传入开机至今的时间再加上延迟执行的时间。如果第一个参数使用的是RTC或RTC_WAKEUP,则这里传入1970年1月1日0点至今的时间再加上延迟执行的时间。

operation 是一个PendingIntent。这里我们一般会调用getBroadcast()方法获取一个能够执行广播的PendingIntent。这样当定时任务被触发时,广播接收器的onReceive()方法就能得到执行。

SystemClock.elapsedrealtime()方法可以获取到系统开机至今所经历时间的毫秒数;
System.currentTimeMillis()方法可以获取到1970年1月1日0点至今所经历时间的毫秒数;

以上就是Alarm机制的基本用法,在下一篇文章中会做一个在后台执行定时任务的小项目。

Android Alarm定时任务基础相关推荐

  1. android创建定时任务

    时代会为你做出选择,不管你是否愿意. 最近的移动端的工作似乎也是到了瓶颈,工作并没有像15-16年那么火爆,貌似市场上出现供过于求的状态,但是没有必要感觉不安,你有着逻辑基础,有着基础能力,闭关几月在 ...

  2. android界面数据存储,Android应用开发基础之数据存储和界面展现(二)

    Android应用开发基础之数据存储和界面展现(二) 常见布局 相对布局 RelativeLayout 组件默认左对齐.顶部对齐 设置组件在指定组件的右边 android:layout_toRight ...

  3. Android中的基础控件TextView、Button、ImageView、EditText、ProgressBar

    文章目录 1 Android中的基础控件 1.1 控件的通用属性 2 TextView 2.1 TextView的继承关系 2.2 TextView的常用属性 3 EditText 3.1 常用属性 ...

  4. Android技能树 — 树基础知识小结(一)

    前言: 现在安卓面试,对于数据结构的问题也越来越多了,也经常看到别人发的面试题都是问什么红黑树,二叉树查找等,所以我们虽然不会马上就会各种难的面试题,但起码树的基础知识还是要会的,这样才能去进一步学. ...

  5. 创建android程序时 默认使用布局是,《Android移动应用基础教程》中国铁道出版社课后习题(附答案)...

    <Android移动应用基础教程>中国铁道出版社课后习题(附答案) 第2章Android UI开发 一.填空题 1.Android中的布局分为6种,分别是RelativeLayout.Li ...

  6. android 启动服务同时传递数据,Android Studio开发基础之起动Service,并通过从Activity向Service传递数据...

    Android Studio开发基础之启动Service,并通过从Activity向Service传递数据 本实例演示启动Service,并通过从Activity向Service传递数据,新建一个Se ...

  7. [编转]Android localsocket 的基础和使用实践: 02

    在上一节里,谈到了基础和具体是实践实现: 这一节涉及调试和具体的实践测试: 例子源码在: http://download.csdn.net/detail/goleftgoright/4183596 下 ...

  8. Android视频开发基础

    Android视频开发基础 版权声明:本文为[viclee]原创,如需转载请注明出处~ https://blog.csdn.net/goodlixueyong/article/details/6205 ...

  9. 音视频开发(19)---Android视频开发基础(一)

    Android视频开发基础(一) 版权声明:本文为[viclee]原创,如需转载请注明出处~ https://blog.csdn.net/goodlixueyong/article/details/6 ...

最新文章

  1. linux 源码搭建lnmp_Linux精华篇—CentOS 7.4下源码编译构建LNMP架构
  2. Wireshark抓包与常见问题解决
  3. 华为H3C ER3100由器限速方法合集
  4. 放个手机在单位自动打卡_钉钉自动打卡(家校打卡,寒假特辑)
  5. minecraft666java_我的世界的666的世界
  6. 双十一大促技术只做两件事情?来看看阿里巴巴的技术之道
  7. 鸿蒙系统的变化,鸿蒙系统没变化的背后
  8. 河北省国家电网计算机专业,河北省国家电网计算机类题目库.doc
  9. Lightroom Classic 教程,如何在 Lightroom 中创建晕影?
  10. 5寸照片尺寸_证件照尺寸及更换背景颜色教程
  11. php在线售卡系统,云尚在线发卡系统PHP源码|专门为个人或小型企业提供在线售卡,订单处理系统...
  12. 以太坊钱包超详细图文教程,设置最安全的ETH钱包
  13. 3dmax中如何解决镜头穿透模型?
  14. php 豆瓣api_豆瓣申请API Key教程
  15. ESP32-CAM与Tonny搭建问题。
  16. 微信小程序canvas实现画圆圈头像
  17. 基于SSM的宠物医院信息系统设计与实现
  18. 优化性能问题的一般方法
  19. 【C/C++】C++代码质量检核工具-cppcheck
  20. 强烈推荐一位改变我命运的程序员大佬!当作礼物送给你!

热门文章

  1. css的`class`选择器选择前缀.
  2. GAMES101 Lec6 反走样与深度缓冲
  3. 【用户画像】标签任务开发流程(源码之实体类、工具类、配置文件、DAO层)
  4. Linux驱动移植USB网卡r8156驱动(详细)总结
  5. u深度制作linux启动盘制作工具,u深度u盘启动盘制作工具教程
  6. k8s入门:部署应用到 k8s 集群
  7. java背单词软件_一个JAVA写的背单词程序
  8. 我国数字经济规模增值世界第一,宝付发力支付+SaaS
  9. android手机传输,智能手机怎么传文件 安卓手机怎么传文件 安卓手机文件传输方法集合...
  10. zcmu-1653,1654...【水题集合】