Android开发中一般常见的定时器有 Timer、Handler。某些场景下也会使用到 AlarmManager ,相对于前面两者,AlarmManager 功能更加多样,某些场景下有更准确的定时效果。

// TimerTimer timer = new Timer();TimerTask task = new TimerTask() {@Overridepublic void run() {// ... ...}};// 延迟 1s 执行timer.schedule(task, 1000);// 取消执行timer.cancel();// HandlerHandler handler = new Handler(getMainLooper());handler.postDelayed(new Runnable() {@Overridepublic void run() {// ... ...}}, 1000);

AlarmManager 中相关方法有以下几种:(根据官网说明)

setInexactRepeating 

触发时间要求不准确的重复警报;例如,每小时重复一次的警报,但不一定在每小时的开头。这些警报比 传统上提供的严格重复警报更节能setRepeating(int, long, long, PendingIntent),因为系统可以调整警报的传递时间,以使它们同时触发,避免不必要地从睡眠中唤醒设备。

setRepeating

设置重复警报。注意:对于计时操作(滴答声、超时等),需要使用 Handler。如果已经为同一个 IntentSender 安排过警报,它将取消先前的。像set(int, long, PendingIntent),可以提供自动重复的警报,直到使用 明确删除cancel(AlarmManager.OnAlarmListener)。如果规定的触发时间是过去的,则将立即触发警报,警报计数取决于触发时间相对于重复间隔过去多长时间。
       如果警报被延迟(由于系统睡眠,例如,对于非 _WAKEUP 警报类型),将尽快发送跳过的重复。之后,未来的告警将按照原定的时间表进行传递;它们不会随时间漂移。例如,如果您设置了每隔一小时的重复闹钟,但手机在 7 点 45 分到 8 点 45 分处于睡眠状态,则手机一醒来就会发出闹钟,然后下一个闹钟会在9:00。
       如果您的应用程序希望允许传递时间漂移以保证警报之间始终至少经过一定的时间间隔,那么采取的方法是使用一次性警报,在处理每个警报传递时自己安排下一个。

set

对于计时操作(滴答声、超时等),使用Handler。如果已经为同一个 IntentSender 安排了警报,则将首先取消之前的警报。如果规定的触发时间已经过去,则立即触发警报。如果这个 Intent 调度已经有一个警报(两个 Intent 的相等性由 定义 Intent#filterEquals),那么它将被删除并替换为这个。从 API 19 开始,传递给此方法的触发时间被视为不精确

setExact

在规定时间准确的发送警报。从 开始Build.VERSION_CODES#S,面向 SDK 级别 31 或更高级别的应用需要请求 SCHEDULE_EXACT_ALARM使用此 API 的权限,除非该应用不受电池限制。用户和系统可以通过设置中的特殊应用访问屏幕撤销此权限。

setAndAllowWhileIdle

类似set(int, long, android.app.PendingIntent),但即使系统处于低功耗空闲(又名打盹)模式,也允许执行此警报。这种类型的警报只能用于实际需要在空闲时发出警报的情况:例如,日历通知应该发出声音以便用户知道它。发出警报后,该应用程序还将添加到系统的临时电源豁免列表中大约 10 秒,以允许该应用程序获取更多唤醒锁以完成其工作。

这些警报会在空闲时显着影响设备的电源使用(从而导致调度它们的应用程序严重指责电池),因此应谨慎使用它们。为了减少滥用,对特定应用程序的警报响起频率有限制。在正常的系统操作下,它不会超过大约每分钟发送这些警报(此时每个此类挂起的警报都会被发送);在低功耗空闲模式下,此持续时间可能会更长,例如 15 分钟。

setExactAndAllowWhileIdle

        类似 setAndAllowWhileIdle ,区别在于此方法定时警报更加准确。

需要精确的延时控制需要使用 setExact 或者 setExactAndAllowWhileIdle ,需要休眠仍然准确就只能使用 setExactAndAllowWhileIdle

Android AlarmManager定时器设置相关推荐

  1. Android中定时器实现的方式对比

    在android中经常需要定时循环执行某一段代码,大家首先想到的是Timer,在一般的场合下,Timer和TimerTask可以完全胜任,但是在有些情况下,Timer就不能很好的完成定时循环任务,如与 ...

  2. android 实现毫秒定时器,Android实现定时器的五种方法实例详解

    一.Timer Timer是Android直接启动定时器的类,TimerTask是一个子线程,方便处理一些比较复杂耗时的功能逻辑,经常与handler结合使用. 跟handler自身实现的定时器相比, ...

  3. Android实现定时器的几种方法

    前言 这几天正在看Android官方的开发文档,里面有很多很值得思考的开发建议,有时间的朋友可以去看一下(官方是英文文档,如果看不懂可以通过浏览器插件翻译对比着看,还是很方便的). 其中一篇课程提到了 ...

  4. html倒计时timer,JavaScript定时器设置、使用与倒计时案例详解

    本文实例讲述了JavaScript定时器设置.使用与倒计时案例.分享给大家供大家参考,具体如下: 1.设置定时器 定时器,适用于定时执行的任务中.在BOM的window对象中,有这样的两个函数是用于设 ...

  5. Android——常用定时器

    文章目录 Timer和TimerTask 自带定时器 CountDownTimer 使用普通子线程延时 使用Hanlder的postDelayed方法 使用系统的AlarmManager来实现定时任务 ...

  6. Android Studio简单设置

    2019独角兽企业重金招聘Python工程师标准>>> Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面 ...

  7. Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案

    Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案 参考文章: (1)Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案 (2)https://www.cn ...

  8. Android NDK 编译选项设置[zhuan]

    http://crash.163.com/#news/!newsId=24 在Android NDK开发中,有两个重要的文件:Android.mk和Application.mk,各尽其责,指导编译器如 ...

  9. Android EditText的设置

    1.输入法Enter键图标的设置: 软件盘的界面替换只有一个属性android:imeOptions,这个属性的可以取的值有normal,actionUnspecified,actionNone,ac ...

最新文章

  1. 一年计划-献给我已经逝去的青春(初出茅庐的小白)
  2. Current综述:中农宋春旭等为植物有益微生物组构建一个美好家园
  3. css3-1 css3游戏介绍、css3样式和优先级
  4. JavaScript算法题:查找数字在数组中的索引
  5. 开发日记-20190518 关键词 函数式编程(二)
  6. 美元汇率pascal程序
  7. android volley post 参数,android – 使用Volley POST传递参数
  8. linux下C/C++ IDE比较 Code::Blocks还是不错的
  9. 两路虚拟化服务器,当四核多路服务器碰上虚拟化
  10. java 线性表的表示和实现_线性表中顺序表的的理解和实现(java)
  11. ubuntu+查看服务器文件夹权限,Ubuntu - 文件夹权限查看与修改
  12. android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解...
  13. webpack官方文档分析(一):安装
  14. PHP自定义数组转Json字符串函数
  15. Linux系统的头文件和库文件搜索路径
  16. linux im-scim-bridge.so 使用,Ubuntu SCIM 输入法不能光标跟随的解决
  17. 计算机桌面任务栏窗口对话框菜单的功能,电脑下方的任务栏不显示怎么办 在任务栏和开始菜单属性对话框...
  18. php 抓取 百度百科,百度百科词条内容爬取-爬虫大作业
  19. html5视屏教程地址
  20. 如何计算机网络打印机,如何共享网络打印机 共享网络打印机教程详解

热门文章

  1. 红外对射和激光对射的性能对比
  2. 【论文阅读】Temporal Segment Networks: Towards Good Practices for Deep Action Recognition
  3. matlab hu矩特征和svm,基于融合Hu矩和区域矩特征的多车牌定位
  4. 全网最全、最新Maven构建工具核心知识,这篇文章包你这辈子也忘不掉Maven!!
  5. 利用纯m文件生成ui界面(一)
  6. delph 自带URL编码函数 TNetEncoding
  7. 【51】keil5软件仿真基本操作
  8. 中国下调2017年经济增速0.1个百分点
  9. Telink 825x - SDK软件结构
  10. 7.6报表的预览和打印