快應(yīng)用 后臺運(yùn)行

2020-08-10 11:03 更新

為了節(jié)省系統(tǒng)資源,通常情況下,快應(yīng)用切換到后臺后將會暫停運(yùn)行,等到再次切換回前臺時(shí)繼續(xù)運(yùn)行。但音樂\運(yùn)動等類型的應(yīng)用, 退到后臺后可能仍然需要繼續(xù)運(yùn)行,為滿足此類需求,加入了對后臺運(yùn)行的支持。后臺運(yùn)行模式的工作原理如下:

在快應(yīng)用切換到后臺時(shí),系統(tǒng)將會檢查是否滿足后臺運(yùn)行的條件,如果滿足,快應(yīng)用將繼續(xù)運(yùn)行,否則將被暫停。此條件包括:

  1.  manifest.json 中聲明了后臺運(yùn)行接口 
  2. 快應(yīng)用調(diào)用 Resident 接口啟動了后臺運(yùn)行模式 
  3. 當(dāng)前至少有一個(gè)(已在 manifest.json 中聲明的)后臺運(yùn)行接口正在運(yùn)行

處于后臺運(yùn)行中的應(yīng)用,如果所有后臺運(yùn)行接口均運(yùn)行結(jié)束,系統(tǒng)將會啟動 20s 倒計(jì)時(shí)。倒計(jì)時(shí)結(jié)束后,如果仍未有后臺運(yùn)行接口被調(diào)用, 快應(yīng)用將會退出后臺運(yùn)行模式,暫停運(yùn)行。

快應(yīng)用進(jìn)入后臺運(yùn)行模式后,系統(tǒng)將會在通知欄上顯示一個(gè)通知,以提示用戶此快應(yīng)用正在后臺運(yùn)行??鞈?yīng)用可以定制通知上的描述文案, 以告知用戶后臺工作的狀態(tài)。通知上有結(jié)束按鈕,用戶可以強(qiáng)制快應(yīng)用退出后臺運(yùn)行模式。

實(shí)踐建議:

  • 后臺運(yùn)行需要消耗較多的系統(tǒng)資源,快應(yīng)用需要根據(jù)自身需求審慎使用。針對申請后臺運(yùn)行的快應(yīng)用,上線審核時(shí)將會審核其后臺運(yùn)行的需求是否合理。
  • 后臺運(yùn)行接口的導(dǎo)入和后臺執(zhí)行的工作放到 app.ux 中,而不是放到頁面中,以免避免頁面切換和銷毀的影響。
  • 盡量提供定制的通知欄描述文案,并且文案應(yīng)準(zhǔn)確描述后臺工作的內(nèi)容及其狀態(tài)(比如網(wǎng)盤應(yīng)用可以顯示:“備份進(jìn)度 30%”),以免用戶反感。

配置方法

manifest.json 中聲明所需的后臺運(yùn)行接口。后臺運(yùn)行接口包括:

  • 音頻播放: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接口使用

詳細(xì)用法參見 Resident 腳本

接口分類

后臺運(yùn)行狀態(tài)下,各接口根據(jù)限制級別的不同被分為三大類:需申請?jiān)L問、可直接訪問、禁止訪問(每個(gè)接口的文檔上均附有本接口的限制級別)。

  1. 需申請?jiān)L問的接口
    此部分接口需要在 manifest.json 的 background 中聲明后才能在后臺運(yùn)行狀態(tài)中使用,并且只有在調(diào)用了如下幾個(gè)接口中的方法時(shí),快應(yīng)用才可以進(jìn)入后臺運(yùn)行狀態(tài)。 例如:音頻(system.audio), 錄音(system.record),上傳下載(system.request),地理位置( system.geolocation )等。
  2. 可直接訪問的接口
    此部分接口可以在后臺運(yùn)行狀態(tài)下直接使用。 例如:應(yīng)用上下文( system.app ),日志打?。?console ),通知消息( system.notification ),數(shù)據(jù)請求( system.fetch )等。
  3. 禁止訪問的接口
    在后臺運(yùn)行狀態(tài)下,如下接口禁止訪問(如果訪問將返回804錯(cuò)誤)。 例如:頁面路由( system.router ),分享( system.share ),彈窗( system.prompt ),打開網(wǎng)頁( system.webview )等

通知提示

如果使用 Audio 接口并且在通知欄顯示了音頻播放狀態(tài),將不會再顯示后臺運(yùn)行通知;

如果只使用除 Audio 外的其它后臺運(yùn)行接口,快應(yīng)用進(jìn)入后臺狀態(tài)后,通知欄會顯示如下提示(描述信息可通過 resident 中 startResident 接口進(jìn)行修改,默認(rèn)不顯示):

img_1


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號