后台运行 1050+

为了节省系统资源,通常情况下,快应用切换到后台后将会暂停运行,等到再次切换回前台时继续运行。但音乐\运动等类型的应用, 退到后台后可能仍然需要继续运行,为满足此类需求,加入了对后台运行的支持。后台运行模式的工作原理如下:

在快应用切换到后台时,系统将会检查是否满足后台运行的条件,如果满足,快应用将继续运行,否则将被暂停。此条件包括:1 manifest.json 中声明了后台运行接口2 快应用调用 Resident 接口启动了后台运行模式3 当前至少有一个(已在 manifest.json 中声明的)后台运行接口正在运行

处于后台运行中的应用,如果所有后台运行接口均运行结束,系统将会启动20s倒计时。倒计时结束后,如果仍未有后台运行接口被调用, 快应用将会退出后台运行模式,暂停运行。

快应用进入后台运行模式后,系统将会在通知栏上显示一个通知,以提示用户此快应用正在后台运行。快应用可以定制通知上的描述文案, 以告知用户后台工作的状态。通知上有结束按钮,用户可以强制快应用退出后台运行模式。

实践建议:

  • 后台运行需要消耗较多的系统资源,快应用需要根据自身需求审慎使用。针对申请后台运行的快应用,上线审核时将会审核其后台运行的需求是否合理。
  • 后台运行接口的导入和后台执行的工作放到 app.ux 中,而不是放到页面中,以免避免页面切换和销毁的影响。
  • 尽量提供定制的通知栏描述文案,并且文案应准确描述后台工作的内容及其状态(比如网盘应用可以显示:“备份进度 30%”),以免用户反感。

配置方法

manifest.json 中声明所需的后台运行接口。后台运行接口包括:音频播放:system.audio录音:system.record上传下载:system.request地理位置:system.geolocation

  1. {
  2. "package": "com.hybrid.demo.sample",
  3. ......
  4. "config": {
  5. "logLevel": "trace",
  6. "background": {
  7. "features":[
  8. "system.audio",
  9. "system.record",
  10. "system.request",
  11. "system.geolocation"
  12. ]
  13. }
  14. ......
  15. }

Resident接口使用

详细用法参见Resident 脚本

接口分类

后台运行状态下,各接口根据限制级别的不同被分为三大类:需申请访问、可直接访问、禁止访问(每个接口的文档上均附有本接口的限制级别)。

1)需申请访问的接口

此部分接口需要在 manifest.json 的 background 中声明后才能在后台运行状态中使用,并且只有在调用了如下几个接口中的方法时,快应用才可以进入后台运行状态。 例如:音频(system.audio), 录音(system.record),上传下载(system.request),地理位置(system.geolocation)等。

2)可直接访问的接口

此部分接口可以在后台运行状态下直接使用。 例如:应用上下文(system.app),日志打印(console),通知消息(system.notification),数据请求(system.fetch)等。

3)禁止访问的接口

在后台运行状态下,如下接口禁止访问(如果访问将返回804错误)。 例如:页面路由(system.router),分享(system.share),弹窗(system.prompt),打开网页(system.webview)等。

通知提示

如果使用 Audio 接口并且在通知栏显示了音频播放状态,将不会再显示后台运行通知;

如果只使用除 Audio 外的其它后台运行接口,快应用进入后台状态后,通知栏会显示如下提示(描述信息可通过resident中startResident 接口进行修改,默认不显示):

img_1