支付寶小程序框架 事件·小程序運(yùn)行機(jī)制

2020-09-18 10:30 更新

下載

小程序無需安裝,用戶第一次使用小程序時(shí),支付寶 App 會從服務(wù)器下載小程序的資源,下載后的小程序資源會緩存在支付寶的客戶端一段時(shí)間。當(dāng)用戶再次打開已經(jīng)緩存資源的小程序時(shí),會跳過下載過程,能夠更快地打開小程序。

熱啟動(dòng)和冷啟動(dòng)

  • 冷啟動(dòng): 當(dāng)用戶打開未啟動(dòng)過,或者是已經(jīng)銷毀的小程序時(shí),稱為冷啟動(dòng)。此時(shí)小程序會執(zhí)行初始化,初始化完成后,會觸發(fā) onLaunch 回調(diào)函數(shù)。
  • 熱啟動(dòng): 當(dāng)用戶打開已經(jīng)關(guān)閉但仍處于后臺運(yùn)行的小程序時(shí),稱為熱啟動(dòng)。在這種情況下,小程序并不會被銷毀后重啟,而僅是從后臺切換到前臺,此時(shí),onShow 函數(shù)會觸發(fā),onLaunch 回調(diào)函數(shù)不會被觸發(fā)。

前臺 / 后臺運(yùn)行

  • 前臺運(yùn)行: 當(dāng)用戶首次打開小程序時(shí)候,小程序會處于前臺運(yùn)行狀態(tài)。
  • 后臺運(yùn)行: 用戶點(diǎn)擊右上角關(guān)閉按鈕關(guān)閉小程序,或者按下設(shè)備 Home 鍵離開支付寶 App 時(shí),小程序并不會直接銷毀,而是進(jìn)入后臺運(yùn)行狀態(tài)。
  • 從后臺運(yùn)行切換為前臺運(yùn)行: 當(dāng)未被系統(tǒng)銷毀的小程序再度被打開或者激活時(shí),會從后臺運(yùn)行切換為前臺運(yùn)行。

可在 app.js 中注冊前臺 / 后臺切換的回調(diào)函數(shù)。當(dāng)小程序從后臺進(jìn)入前臺顯示時(shí)會觸發(fā) onShow,當(dāng)小程序從前臺到后臺時(shí)會觸發(fā) onHide。

緩存

開啟本地緩存數(shù)據(jù),進(jìn)行存儲、獲取和刪除等控制。 單個(gè)小程序的緩存總上限為 10MB。 同步方法會阻塞當(dāng)前任務(wù),直到同步方法處理返回。異步方法不會阻塞當(dāng)前任務(wù)。

操作 同步 異步 描述
存儲 my.setStorageSync my.setStorage 數(shù)據(jù)存儲在本地緩存中指定的 key 中的接口,會覆蓋掉原來該 key 對應(yīng)的數(shù)據(jù)
讀取 my.getStorageSync my.getStorage 獲取緩存數(shù)據(jù)的接口
清除 my.clearStorageSync my.clearStorage 清除本地?cái)?shù)據(jù)緩存的接口
刪除 my.removeStorageSync my.removeStorage 刪除緩存數(shù)據(jù)的接口
獲取相關(guān)信息 my.getStorageInfoSync my.getStorageInfo 獲取當(dāng)前 storage 的相關(guān)信息的接口

銷毀

用戶點(diǎn)擊右上角關(guān)閉按鈕關(guān)閉小程序時(shí),小程序僅是進(jìn)入后臺運(yùn)行,不會被銷毀。只有當(dāng)小程序進(jìn)入后臺運(yùn)行狀態(tài)一定時(shí)間,或者占用系統(tǒng)資源過高時(shí),才會被真正銷毀。

常見問題

Q:小程序是否支持 cookie 和 session?

A:小程序不建議使用 cookie,不支持 session。推薦使用小程序緩存。

Q:使用了緩存 API 后,小程序的緩存什么時(shí)候會被清掉?

A:使用了緩存 API 必須使用清除 API,否則緩存不會被清除掉。

Q:小程序啟動(dòng)報(bào)錯(cuò)Error: EACCES: permission denied, mkdir /Users/xiaoqiang/Tuhu/Gitlab/Ali_ App/Ali_App/dist/.tea

A:權(quán)限問題,用超級用戶來執(zhí)行。在npm install 指令前加 sudo 變?yōu)椋?sudo npm install。

Q:打開小程序報(bào)錯(cuò)“系統(tǒng)異常,暫時(shí)無法啟動(dòng),請稍后再試”

A:支付寶 APP 版本過低,不支持某些 API 或者組件,會報(bào)這樣的錯(cuò)誤。建議做 兼容 處理。

Q:報(bào)錯(cuò):TypeError:jsarr.push is not a function,怎么解決?

A:不支持發(fā)送push消息。推薦使用小程序緩存。

Q:小程序中存入的緩存數(shù)據(jù)為什么多了一對雙引號?

A:告知在調(diào)用存入 API 時(shí)使用了 JSON.stringify 導(dǎo)致。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號