OpenHarmony-设备待机部件以及竞品Andriod和IOS的后台管控机制对比

OpenHarmony-设备待机部件

简介

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

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

**加粗样式
**

目录

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

部件内子模块职责说明

子模块名称功能职责描述
interface1.对外提供inner级别dump维测、豁免、通知接口。
2.提供约束接口。
sa_profile在服务管理中配置standby服务。
services1.内部核心服务功能实现。
2.通知、查询功能。
plugins1.状态监控。
2.决策是否限制设备应用资源。
3.转换设备状态。
4.执行策略。
utils1.通用工具、日志实现。
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

非待机应用资源枚举。

名称说明
NETWORK1网络访问资源
RUNNING_LOCK2cpu-runninglock资源
TIMER4timer任务资源
WORK_SCHEDULER8work任务资源
AUTO_SYNC16自动同步的资源
PUSH32pushkit资源
FREEZE64冻结应用资源

ExemptedAppInfo

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

名称类型必填说明
resourceTypesnumber应用的资源类型
namestring应用名
durationnumber豁免时长

ResourceRequest

待机资源请求体。

名称类型必填说明
resourceTypesnumber应用的资源类型
uidnumber应用uid
namestring应用名称
durationnumber豁免时长
reasonstring申请原因

相关仓

资源调度子系统

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分钟,时间一到立马挂起。

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

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值