千家信息网

Android中如何利用Alarmmanager实现一个定时闹钟

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要讲解了"Android中如何利用Alarmmanager实现一个定时闹钟",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Android中如何
千家信息网最后更新 2025年01月23日Android中如何利用Alarmmanager实现一个定时闹钟

这篇文章主要讲解了"Android中如何利用Alarmmanager实现一个定时闹钟",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Android中如何利用Alarmmanager实现一个定时闹钟"吧!

Alarmmanager主要管理硬件时钟。一些与时间相关的应用,如日历,闹钟等需要使用AlarmManager的服务。Alarmmanager功能相对比较简单,相关代码位于:

frameworks/base/core/jni/server/com_android_server_AlarmManagerService.cppframeworks/base/services/java/com/android/server/AlarmManagerService.java

一.frameworks/base/core/jni/server/com_android_server_AlarmManagerService.cpp

这部分代码直接管理硬件时钟,设备名为/dev/alarm。包括打开设备,关闭设备,设置时区,设置触发时间(timeout),以及等待时钟触发。

二.frameworks/base/services/java/com/android/server/AlarmManagerService.java

这部分封装目录一中的代码,向上提供java接口,同时与客户端(如calendar)交互,接收来自客户端的时钟设置请求,并在时钟触发时通知客户端。

Alarm是在预定的时间上触发Intent的一种独立的方法。

Alarm超出了应用程序的作用域,所以它们可以用于触发应用程序事件或动作,甚至在应用程序关闭之后。与BroadcastReceiver结合,它们可以变得尤其的强大,可以通过设置Alarm来启动应用程序或者执行动作,而应用程序不需要打开或者处于活跃状态。

举个例子,你可以使用Alarm来实现一个闹钟程序,执行正常的网络查询,或者在"非高峰"时间安排耗时或有代价的操作。

对于仅在应用程序生命周期内发生的定时操作,Handler类与Timer和Thread类的结合是一个更好的选择,它允许Android更好地控制系统资源。

Android中的Alarm在设备处于睡眠模式时仍保持活跃,它可以设置来唤醒设备;然而,所有的Alarm在设备重启时都会被取消。

Alarm的操作通过AlarmManager来处理,通过getSystemService可以获得其系统服务,如下所示:

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

为了创建一个新的Alarm,使用set方法并指定一个Alarm类型、触发时间和在Alarm触发时要调用的Intent。如果你设定的Alarm发生在过去,那么,它将立即触发。

这里有4种Alarm类型。你的选择将决定你在set方法中传递的时间值代表什么,是特定的时间或者是时间流逝:

RTC_WAKEUP

在指定的时刻(设置Alarm的时候),唤醒设备来触发Intent。

RTC

在一个显式的时间触发Intent,但不唤醒设备。

ELAPSED_REALTIME

从设备启动后,如果流逝的时间达到总时间,那么触发Intent,但不唤醒设备。流逝的时间包括设备睡眠的任何时间。注意一点的是,时间流逝的计算点是自从它***一次启动算起。

ELAPSED_REALTIME_WAKEUP

从设备启动后,达到流逝的总时间后,如果需要将唤醒设备并触发Intent。

Alarm的创建过程演示如下片段所示:

intalarmType=AlarmManager.ELAPSED_REALTIME_WAKEUP; longtimeOrLengthofWait=10000; StringALARM_ACTION="ALARM_ACTION"; IntentintentToFire=newIntent(ALARM_ACTION); PendingIntentpendingIntent=PendingIntent.getBroadcast(this,0,intentToFire, 0); alarms.set(alarmType,timeOrLengthofWait,pendingIntent);

当Alarm到达时,你指定的PendingIntent将被触发。设置另外一个Alarm并使用相同的PendingIntent来替代之前存在的Alarm。

取消一个Alarm,调用AlarmManager的cancel方法,传入你不再希望被触发的 PendingIntent,如下面的代码所示:

alarms.cancel(pendingIntent);

接下来的代码片段中,设置了两个Alarm,随后马上取消了***个Alarm。***个Alarm显 式地设置了在特定的时间唤醒设备并发送Intent。第二个设置为从设备启动后,流逝时间 为30分钟,到达时间后如果设备在睡眠状态也不会唤醒它。

  1. AlarmManageralarms=(AlarmManager)getSystemService(Context.ALARM_SERVICE);

  2. StringMY_RTC_ALARM="MY_RTC_ALARM";

  3. StringALARM_ACTION="MY_ELAPSED_ALARM";

  4. PendingIntentrtcIntent=PendingIntent.getBroadcast(this,0,new Intent(MY_RTC_ALARM),1);

  5. PendingIntentelapsedIntent=PendingIntent.getBroadcast(this,0,new Intent(ALARM_ACTION),1);

  6. //Wakeupandfireintentin5hours.(注释可能有错)

  7. Datet=newDate();

  8. t.setTime(java.lang.System.currentTimeMillis()+60*1000*5);

  9. alarms.set(AlarmManager.RTC_WAKEUP,t.getTime(),rtcIntent);

  10. //Fireintentin30minsifalreadyawake.

  11. alarms.set(AlarmManager.ELAPSED_REALTIME,30*60*1000,elapsedIntent);

  12. //Cancelthefirstalarm.

  13. alarms.cancel(rtcIntent);

感谢各位的阅读,以上就是"Android中如何利用Alarmmanager实现一个定时闹钟"的内容了,经过本文的学习后,相信大家对Android中如何利用Alarmmanager实现一个定时闹钟这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

时间 设备 程序 应用 闹钟 应用程序 代码 时钟 方法 客户 学习 睡眠 内容 动作 客户端 片段 状态 硬件 类型 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 电商网络技术教学工作总结 华越网络技术有限公司官网 网络安全应急演练总结免费下载 漫画书软件开发程序 泰拉瑞亚大型服务器资源不够 网络安全股票周期 中国第一家网络安全公司 蒲江县国家网络安全宣传周 铁路装车软件开发语言是什么 合肥软件开发驻场怎么样 原神PC老是断开服务器连接 lua 数据库读写 怎么在服务器上开安全狗 面试数据库工作 怎么将前端文件上传到服务器 网络安全和信息化局工作总结 数据库查询怎么复制数据 旌德进口软件开发服务品质保障 sql数据库权限异常 佛山数据链软件开发销售厂 建设项目财务分析软件开发 数据库控制的基本原则 网络安全升级申请报告 网络安全等级保护标准2.0解读 软件开发技术考核标准 株洲游戏软件开发费用 地下城服务器列表 5m带宽的服务器 软件测试还是软件开发 智能袋鼠教育软件开发
0