1.Android中定时任务一般有两种实现方式:(1)使用Java API里提供的Timer类;(2)使用Android的Alarm机制。

但是,Timer类有个明显的短板,不太适用于那些需要长期在后台运行的定时任务。

2.为了让电池更加耐用,每种手机都有自己的休眠政策,Android手机会在长时间不操作的情况下自动让CPU进入到

睡眠状态,可能导致Timer类中的定时任务无法正常运行;而Alarm机制具有唤醒CPU功能,可以保证每次需要执行

定时任务时CPU都能正常工作。

3.获取个AlarmManager实例:

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

接下来调用AlarmManager的set()方法,可以设置个定时任务:

long triggerAtTime = SystemClock.elapsedRealtime() + 10 * 1000; //设定个任务在10秒后执行
manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pendingIntent);

set()方法,第一个参数是整型参数,指定AlarmManager的工作类型,

ELAPSED_REALTIME:定时任务的触发时间从系统开机开始算起,不会唤醒CPU。

ELAPSED_REALTIME_WAKEUP:定时任务的触发时间从系统开机开始算起,会唤醒CPU。

RTC:定时任务的触发时间从1970年1月1日0点算起,不会唤醒CPU。

RTC_WAKEUP:定时任务的触发时间从1970年1月1日0点算起,会唤醒CPU。

4.使用SystemClock.elapsedRealtime()方法可获取到系统开机至今所经历时间的毫秒数,

使用System.currentTimeMillis()方法可获取到1970年1月1日0点至今所经历时间的毫秒数。

5.第二个参数,定时任务触发的时间,以毫秒为单位,这里是传入开机至今的时间或1970年1月1日0点至今的时间,最后再

加上延迟执行的时间。第三个是一个PendingIntent,一般调用getBroadcast()方法来获取一个能够执行广播的PendingIntent。

当定时任务被触发的时候,广播接收器的onReceive()方法可以得到执行。

最新文章

  1. C语言 · 矩阵乘法 · 算法训练
  2. C#调用SendMessage 用法
  3. 【转载】64 位 Windows 内核虚拟地址空间布局(基于 X64 CPU)
  4. Leetcode Longest Common Prefix
  5. Excel大批量导入数据到SQLServer数据库-万条只用1秒
  6. paip. 解决php 以及 python 连接access无效的参数量。参数不足,期待是 1”的错误
  7. oss cmd
  8. 从DB灌值到DataTable时,字段值为NULL时报错相关信息;
  9. 介绍Git版本控制器的使用
  10. unserialize函数中的参数是否是污染数据
  11. UML元素分析
  12. poj 2411 Mondriaan's Dream(状态压缩dP)
  13. 查询两个日期(时间)以内的数据,between and 或 and 连>= <=,to_date()
  14. 找不到Qt5Cored.dll(Release和Debug版连接了不同的库)
  15. Collections类方法详解
  16. LoadRunner11_录制Oracle数据库脚本
  17. SpringBoot 4.SpringBoot 整合 devtools 实现热部署
  18. STM32L011D4 ----- 使用注意
  19. 论文笔记:Joint Embeddings of Shapes and Images via CNN Image Purification
  20. JS — 数组去重(4种方法)

热门文章

  1. hdu4976 贪心+dp
  2. 关于laravel框架的Auth::attempt验证失败
  3. TagHelper
  4. 搭建splinter+python环境时遇到的错误
  5. 导出excel的三种方式
  6. SQLiteDatabase中的事务
  7. linux中fork()函数
  8. 【HDOJ】4515 小Q系列故事——世界上最遥远的距离
  9. B450配置
  10. 笔记:java并发实践2