快应用 后台运行
为了节省系统资源,通常情况下,快应用切换到后台后将会暂停运行,等到再次切换回前台时继续运行。但音乐\运动等类型的应用, 退到后台后可能仍然需要继续运行,为满足此类需求,加入了对后台运行的支持。后台运行模式的工作原理如下:
在快应用切换到后台时,系统将会检查是否满足后台运行的条件,如果满足,快应用将继续运行,否则将被暂停。此条件包括:
- manifest.json 中声明了后台运行接口
- 快应用调用 Resident 接口启动了后台运行模式
- 当前至少有一个(已在 manifest.json 中声明的)后台运行接口正在运行
处于后台运行中的应用,如果所有后台运行接口均运行结束,系统将会启动 20s 倒计时。倒计时结束后,如果仍未有后台运行接口被调用, 快应用将会退出后台运行模式,暂停运行。
快应用进入后台运行模式后,系统将会在通知栏上显示一个通知,以提示用户此快应用正在后台运行。快应用可以定制通知上的描述文案, 以告知用户后台工作的状态。通知上有结束按钮,用户可以强制快应用退出后台运行模式。
实践建议:
- 后台运行需要消耗较多的系统资源,快应用需要根据自身需求审慎使用。针对申请后台运行的快应用,上线审核时将会审核其后台运行的需求是否合理。
- 后台运行接口的导入和后台执行的工作放到 app.ux 中,而不是放到页面中,以免避免页面切换和销毁的影响。
- 尽量提供定制的通知栏描述文案,并且文案应准确描述后台工作的内容及其状态(比如网盘应用可以显示:“备份进度 30%”),以免用户反感。
配置方法
manifest.json 中声明所需的后台运行接口。后台运行接口包括:
- 音频播放:system.audio
- 录音:system.record
- 上传下载:system.request
- 地理位置:system.geolocation
{
"package": "com.hybrid.demo.sample",
......
"config": {
"logLevel": "trace",
"background": {
"features":[
"system.audio",
"system.record",
"system.request",
"system.geolocation"
]
}
......
}
Resident接口使用
详细用法参见 Resident 脚本
接口分类
后台运行状态下,各接口根据限制级别的不同被分为三大类:需申请访问、可直接访问、禁止访问(每个接口的文档上均附有本接口的限制级别)。
- 需申请访问的接口
此部分接口需要在 manifest.json 的 background 中声明后才能在后台运行状态中使用,并且只有在调用了如下几个接口中的方法时,快应用才可以进入后台运行状态。 例如:音频(system.audio), 录音(system.record),上传下载(system.request),地理位置( system.geolocation )等。 - 可直接访问的接口
此部分接口可以在后台运行状态下直接使用。 例如:应用上下文( system.app ),日志打印( console ),通知消息( system.notification ),数据请求( system.fetch )等。 - 禁止访问的接口
在后台运行状态下,如下接口禁止访问(如果访问将返回804错误)。 例如:页面路由( system.router ),分享( system.share ),弹窗( system.prompt ),打开网页( system.webview )等
通知提示
如果使用 Audio 接口并且在通知栏显示了音频播放状态,将不会再显示后台运行通知;
如果只使用除 Audio 外的其它后台运行接口,快应用进入后台状态后,通知栏会显示如下提示(描述信息可通过 resident 中 startResident 接口进行修改,默认不显示):