app开发和网站开发哪个简单,店面设计说明,宁波网络推广渠道,建设网站修改图片安卓手机APP开发___设置闹钟
目录
概述
设置不精确闹钟
在特定时间后发出闹钟
在特定时间范围内触发闹钟
以大致有规律的时间间隔响起重复闹钟
设置精确的闹钟
系统会在未来的某个精确时刻调用精确闹钟。
可能不需要精确闹钟的用例
设置精确闹钟的方法
系统资源消耗…安卓手机APP开发___设置闹钟
目录
概述
设置不精确闹钟
在特定时间后发出闹钟
在特定时间范围内触发闹钟
以大致有规律的时间间隔响起重复闹钟
设置精确的闹钟
系统会在未来的某个精确时刻调用精确闹钟。
可能不需要精确闹钟的用例
设置精确闹钟的方法
系统资源消耗
声明适当的精确闹钟权限
使用 SCHEDULE_EXACT_ALARM 权限 概述
闹钟基于 AlarmManager 类为您提供了一种在应用生命周期之外 执行基于时间的操作的方法。例如您可以使用闹钟启动长时间运行 的操作如每天启动一次服务以下载天气预报。
闹钟具有以下特征 它们可让您按设定的时间和/或间隔触发 intent。 您可以将它们与广播接收器结合使用以安排作业或 WorkRequest 以执行其他操作。 它们在应用之外运行因此即使您的应用未运行甚至设备本身处于休眠状态 您也可以使用它们触发事件或操作。 它们可以帮助您最大限度地减少应用的资源需求。您可以安排操作而无需 依赖计时器或持续运行服务。
注意 对于保证在应用生命周期内发生的计时操作请考虑将 Handler 类与 Timer 和 Thread 结合使用。此方法可让 Android 更好地控制系统资源。
设置不精确闹钟
如果应用设置了不精确闹钟系统会在未来的某个时间点发出闹钟。不精确闹钟可 在遵循低电耗模式等省电限制的同时保证闹钟的发送时间。
注意 大多数应用都可以使用不精确的闹钟来调度任务和事件。如果应用的核心 功能依赖于精确计时的闹钟例如闹钟应用或日历应用则可以改用精确闹钟。
开发者可以利用以下 API 保证来自定义不精确闹钟的发送时间。 在特定时间后发出闹钟
如果您的应用调用 set()、setInexactRepeating() 或 setAndAllowWhileIdle() 则闹钟绝不会在提供的触发时间之前响起。
在 Android 12API 级别 31及更高版本中除非已实施任何节电限制 例如省电模式或低电耗模式否则系统会在提供的触发时间后的 1 小时内调用闹钟。
在特定时间范围内触发闹钟
如果您的应用调用 setWindow()则闹钟绝不会在所提供的触发时间之前响起。 除非任何省电限制生效否则闹钟会在指定的时间范围内从指定的触发时间开始 内发出。
如果您的应用以 Android 12 或更高版本为目标平台则系统可以将对带时间范 围的不精确闹钟的调用延迟至少 10 分钟。因此600000 下的 windowLengthMillis 参数值会被裁剪为 600000。
以大致有规律的时间间隔响起重复闹钟
如果您的应用调用 setInexactRepeating()系统会调用多个闹钟 第一个闹钟会在指定的时间范围内触发从指定的触发时间开始。 后续闹钟通常会在指定时间范围过后响起。两次连续的闹铃调用的间隔 时间可能会有所不同。
设置精确的闹钟
系统会在未来的某个精确时刻调用精确闹钟。
大多数应用都可以使用不精确闹钟来调度任务和事件以完成几个常见用例。 如果应用的核心功能依赖于精确计时的闹钟例如闹钟应用或日历应用 则可以改用精确闹钟。 注意 如果您的应用以 Android 12 或更高版本为目标平台您必须声明 一项“闹钟和提醒”权限。否则会发生 SecurityException。
可能不需要精确闹钟的用例
以下列表显示了可能不需要精确闹钟的常见工作流
在应用的生命周期内调度计时操作 Handler 类包含几种处理计时操作的好方法例如在应用处于活动 状态时每 n 秒执行一次工作postAtTime() 和 postDelayed()。 请注意这些 API 依赖于系统正常运行时间而不是实时。 安排好的后台工作例如更新应用和上传日志 WorkManager 提供了一种安排时间敏感型定期工作的方法。您可以 提供重复间隔和 flexInterval至少 15 分钟以定义工作的 精细运行时间。 应在特定时间过后执行的用户指定操作即使系统处于空闲状态 使用不精确闹钟。具体来说就是调用 setAndAllowWhileIdle()。 应在特定时间过后执行的用户指定操作 使用不精确闹钟。具体来说就是调用 set()。 可在指定时间范围内执行的用户指定操作 使用不精确闹钟。具体来说就是调用 setWindow()。请注意如 果应用以 Android 12 或更高版本为目标平台则允许的最短窗口 时长为 10 分钟。
设置精确闹钟的方法
您的应用可以使用以下方法之一设置精确闹钟。这些方法按顺序排列 因此更靠近列表底部的方法可处理对时间更重要的任务但需要更多系统资源。
setExact() 只要其他省电措施没有生效在未来一个近乎精确的时间就会触发闹钟。 除非应用的工作对用户来说非常关键否则使用此方法设置精确的闹钟。 setExactAndAllowWhileIdle() 在未来近乎精确的时间调用闹钟即使采用了省电措施也是如此。 setAlarmClock() 在未来某个精确时间启动闹钟。由于用户非常容易看到这些闹钟 因此系统绝不会调整其触发时间。系统会将这些闹钟识别为最关键 的闹钟并在必要时关闭低功耗模式以实现闹钟。 注意 当您的应用使用此方法安排精确闹钟时闹钟调用可能会 严重影响设备的资源如电池续航时间。
系统资源消耗
当系统触发您的应用设置的确切闹钟时设备会消耗大量的资源如电池 续航时间尤其是在设备处于节能模式时。此外系统无法轻松地对 这些请求进行批处理以便更高效地使用资源。
强烈建议您尽可能创建不精确闹钟。如需执行时间更长的工作请使用 闹钟 BroadcastReceiver 中的 WorkManager 或 JobScheduler 进行调度。 如需在设备处于低电耗模式时执行工作请使用 setAndAllowWhileIdle() 创建不精确闹钟然后从该闹钟启动作业。 注意 Android 将精确闹钟视为对时间敏感的重要中断。因此精确的 闹钟不受前台服务启动限制的影响。
声明适当的精确闹钟权限
如果您的应用以 Android 12 或更高版本为目标平台您必须获得 “闹钟和提醒”特殊应用访问权限。为此请在应用的清单文件中声明 SCHEDULE_EXACT_ALARM 权限如以下代码段所示
manifest ...uses-permission android:nameandroid.permission.SCHEDULE_EXACT_ALARM/application ....../application
/manifest
如果您的应用以 Android 13API 级别 33或更高版本为目标平台您可以 选择声明 SCHEDULE_EXACT_ALARM 或 USE_EXACT_ALARM 权限。
manifest ...uses-permission android:nameandroid.permission.USE_EXACT_ALARM/application ....../application
/manifest
虽然 SCHEDULE_EXACT_ALARM 权限和 USE_EXACT_ALARM 权限表示的功能相同 但权限授予方式不同支持不同的用例。仅当应用中面向用户的功能需要 精确计时的操作时您的应用才应使用精确闹钟并声明 SCHEDULE_EXACT_ALARM 或 USE_EXACT_ALARM 权限。
USE_EXACT_ALARM 已自动授予 用户无法撤消此操作 遵守即将实施的 Google Play 政策 有限用例
SCHEDULE_EXACT_ALARM 用户授予的权限 更广泛的应用场景 应用应确认权限未被撤消
对于以 Android 13API 级别 33及更高版本为目标平台的应用的新安装 系统不会预先授予 SCHEDULE_EXACT_ALARM 权限。如果用户通过备份和恢复 操作将应用数据转移到搭载 Android 14 的设备新设备上的 SCHEDULE_EXACT_ALARM 权限会被拒绝。不过如果现有应用已拥有此权限 则当设备升级到 Android 14 时系统会预先授予此权限。
注意如果使用 OnAlarmListener 对象如 setExact API设置精确闹钟 则无需 SCHEDULE_EXACT_ALARM 权限。
使用 SCHEDULE_EXACT_ALARM 权限
与 USE_EXACT_ALARM 不同SCHEDULE_EXACT_ALARM 权限必须由用户授予。 用户和系统都可以撤消 SCHEDULE_EXACT_ALARM 权限。
如需检查是否已向您的应用授予相应权限请先调用 canScheduleExactAlarms() 然后再尝试设置精确闹钟。撤消应用的 SCHEDULE_EXACT_ALARM 权限后应用会 停止运行并取消将来的所有精确闹钟。这也意味着canScheduleExactAlarms() 返回的值在应用的整个生命周期内有效。
向您的应用授予 SCHEDULE_EXACT_ALARMS 权限后系统会向其发送 ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED 广播。 您的应用应实现广播接收器以便执行以下操作 确认您的应用仍具有特殊应用访问权限。为此请调用 canScheduleExactAlarms()。 此检查可防止您的应用出现以下情况用户授予应用该权限然后几乎立即撤消该权限。 根据应用的当前状态重新调度应用需要的任何精确的闹钟。此逻辑应与您的 应用接收 ACTION_BOOT_COMPLETED 广播时所执行的操作类似。
要求用户授予 SCHEDULE_EXACT_ALARM 权限
该选项称为“允许设置闹钟和提醒” 图 1. 系统设置中的“闹钟和提醒”特殊应用访问权限页面用户可以在该页面中 允许您的应用设置精确的闹钟。
如有必要您可以将用户转到系统设置中的闹钟和提醒屏幕如图 1 所示。 为此请完成以下步骤 在应用的界面中向用户解释为什么您的应用需要调度精确的闹钟。 调用包含 ACTION_REQUEST_SCHEDULE_EXACT_ALARM intent 操作的 intent。