快应用 后台运行

2020-08-10 11:03 更新

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

在快应用切换到后台时,系统将会检查是否满足后台运行的条件,如果满足,快应用将继续运行,否则将被暂停。此条件包括:

  1.  manifest.json 中声明了后台运行接口 
  2. 快应用调用 Resident 接口启动了后台运行模式 
  3. 当前至少有一个(已在 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 脚本

接口分类

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

  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


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号