OpenHarmony-设备待机部件

简介

为提高设备续航,降低设备功耗,在设备进入待机空闲状态时,系统会限制后台应用使用资源。开发者可以根据自身情况,为自己的应用申请纳入待机资源管控,或者暂时不被待机资源管控。

图 1 设备待机部件整体架构图

**加粗样式
**

目录

/foundation/resourceschedule/device_standby
├── frameworks       # 接口实现
├── interfaces
│   ├── innerkits    # 对内接口目录
│   └── kits         # 对外接口目录
├── sa_profile       # 组件服务配置
├── services         # 组件服务实现
└── utils            # 组件工具实现
└── plugins          # 插件(状态监控、决策、转换、执行)
└── bundle.json      # 部件描述及编译文件

部件内子模块职责说明

子模块名称 功能职责描述
interface 1.对外提供inner级别dump维测、豁免、通知接口。
2.提供约束接口。
sa_profile 在服务管理中配置standby服务。
services 1.内部核心服务功能实现。
2.通知、查询功能。
plugins 1.状态监控。
2.决策是否限制设备应用资源。
3.转换设备状态。
4.执行策略。
utils 1.通用工具、日志实现。
2.相关配置读写。
frameworks 配置对外接口框架能力。

设备待机管控

接口名 接口描述
function getExemptedApps(resourceTypes: number, callback: AsyncCallback<Array<ExemptedAppInfo>>): void; 获取进入待机模式的应用名单,使用Callback异步回调。
function getExemptedApps(resourceTypes: number): Promise<Array<ExemptedAppInfo>>; 获取进入待机模式的应用名单,使用Promise异步回调。
function requestExemptionResource(request: ResourceRequest): void; 应用订阅申请豁免,使应用临时不进入待机管控。
function releaseExemptionResource(request: ResourceRequest): void; 取消应用订阅申请豁免。

使用说明

当设备应用长时间未被使用或通过按键,本部件可以使设备应用进入待机模式。待机模式不影响应用使用,还可以延长电池续航时间。通过本模块接口,开发者可为应用申请或取消待机资源管控。使用时需先申请权限:ohos.permission.DEVICE_STANDBY_EXEMPTION。

ResourceType

非待机应用资源枚举。

名称 说明
NETWORK 1 网络访问资源
RUNNING_LOCK 2 cpu-runninglock资源
TIMER 4 timer任务资源
WORK_SCHEDULER 8 work任务资源
AUTO_SYNC 16 自动同步的资源
PUSH 32 pushkit资源
FREEZE 64 冻结应用资源

ExemptedAppInfo

豁免应用信息,未进入待机管控的应用信息。

名称 类型 必填 说明
resourceTypes number 应用的资源类型
name string 应用名
duration number 豁免时长

ResourceRequest

待机资源请求体。

名称 类型 必填 说明
resourceTypes number 应用的资源类型
uid number 应用uid
name string 应用名称
duration number 豁免时长
reason string 申请原因

相关仓

资源调度子系统

resourceschedule_device_standby

resourceschedule_work_scheduler

notification_ces_standard

appexecfwk_standard

powermgr_battery_manager

resourceschedule_background_task_mgr

竞品相关资料

android-针对低电耗模式和应用待机模式进行优化

  • android-针对低电耗模式和应用待机模式进行优化
    如果用户未接通电源,让设备长时间处于静止状态,且屏幕关闭,则设备会进入低电耗模式。在低电耗模式下,系统会尝试通过限制应用对网络和 CPU 密集型服务的访问权限来节省电量。此外,这还会阻止应用访问网络,并推迟其作业、同步和标准闹钟。

系统会定期退出低电耗模式一会儿,以便应用完成其已推迟的活动。在此维护期,系统会运行所有待处理的同步、作业和闹钟,并允许应用访问网络。
图 1. 低电耗模式提供了周期性维护期,让应用使用网络并处理待处理的活动。
图 1. 低电耗模式提供了周期性维护期,让应用使用网络并处理待处理的活动。
维护窗口结束后,系统会再次进入低电耗模式,暂停网络访问并延迟作业、同步和闹钟。随着时间的推移,系统安排维护窗口的频率会降低,这有助于在设备未充电时长时间处于不活动状态时降低耗电量。

当用户通过移动设备、打开屏幕或连接充电器唤醒设备时,系统会退出低电耗模式,并且所有应用都会恢复正常的活动。

在低电耗模式下,系统会对您的应用应用以下限制:

  • 暂停网络访问权限。
  • 忽略唤醒锁定。
  • 将标准 AlarmManager 闹钟(包括 setExact() 和 setWindow())推迟到下一个维护窗口。
    • 如果您需要设置在低电耗模式下触发的闹钟,请使用 setAndAllowWhileIdle() 或 setExactAndAllowWhileIdle()。
    • 使用 setAlarmClock() 设置的闹钟会继续正常触发。系统会在这些闹钟触发前不久退出低电耗模式。
  • 不执行 WLAN 扫描。
  • 不允许运行同步适配器。
  • 不允许 JobScheduler 运行。

IOS的墓碑机制

具体描述可以参考墓碑机制与 iOS 应用程序的生命周期 - 陈旭华 - 博客园
墓碑机制(Tombstone)也就是常说的「伪多任务」,是手机操作系统中的一个程序运行规则。

当上一个任务被迫中断时,如按下 Home 键至主界面的瞬间,系统会记录当下应用程序的状态,随后程序被冻结起来(完全挂起),就像把事件记录在墓碑上一样。

当需要恢复时,根据墓碑上的内容,将程序恢复到中断之前的状态。

这样的一种机制就是墓碑机制,墓碑机制常见于移动设备这种内存或电能资源有限的平台。

在此机制之上,苹果也开放了一个后台接口,允许应用在进入后台之后继续运行10分钟,无论亮屏还是息屏休眠都是10分钟,时间一到立马挂起。

墓碑式后台,在关闭程序时保存现场,下次启动时还原,给人一种后台的假象。

参考资料

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐