1050+
为了节省系统资源,通常情况下,快应用切换到后台后将会暂停运行,等到再次切换回前台时继续运行。但音乐\运动等类型的应用, 退到后台后可能仍然需要继续运行,为满足此类需求,加入了对后台运行的支持。后台运行模式的工作原理如下:
在快应用切换到后台时,系统将会检查是否满足后台运行的条件,如果满足,快应用将继续运行,否则将被暂停。此条件包括:
1 manifest.json 中声明了后台运行接口
2 快应用调用 Resident 接口启动了后台运行模式
3 当前至少有一个(已在 manifest.json 中声明的)后台运行接口正在运行
处于后台运行中的应用,如果所有后台运行接口均运行结束,系统将会启动20s倒计时。倒计时结束后,如果仍未有后台运行接口被调用, 快应用将会退出后台运行模式,暂停运行。
快应用进入后台运行模式后,系统将会在通知栏上显示一个通知,以提示用户此快应用正在后台运行。快应用可以定制通知上的描述文案, 以告知用户后台工作的状态。通知上有结束按钮,用户可以强制快应用退出后台运行模式。
实践建议:
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 脚本
后台运行状态下,各接口根据限制级别的不同被分为三大类:需申请访问、可直接访问、禁止访问(每个接口的文档上均附有本接口的限制级别)。
此部分接口需要在 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 接口进行修改,默认不显示):