android工程師學習微信小程序筆記⑤ 小程序App

宿主環境提供了 App() 構造器用來註冊一個程序App,需要留意的是App() 構造器必須寫在項目根目錄的app.js裏,App實例是單例對象,在其他JS腳本中可以使用宿主環境提供的 getApp() 來獲取程序實例。

微信官方文檔App講解

小程序App函數

每個小程序都需要在 app.js 中調用 App 方法註冊小程序實例,綁定生命週期回調函數、錯誤監聽和頁面不存在監聽函數等。

App() 必須在 app.js 中調用,必須調用且只能調用一次。不然會出現無法預期的後果。

// app.js
App({
  onLaunch (options) {
    // Do something initial when launch.
  },
  onShow (options) {
    // Do something when show.
  },
  onHide () {
    // Do something when hide.
  },
  onError (msg) {
    console.log(msg)
  },
  onPageNotFound (options) {

  },
  onUnhandledRejection (options) {

  },
  globalData: 'I am global data'
})

onLaunch(Object object)

小程序初始化完成時觸發,全局只觸發一次。參數也可以使用 wx.getLaunchOptionsSync 獲取。

一般我們會在這裏取一些啓動參數,比如scene、目標路徑、目標參數等等,也可以在這裏上報埋點用來統計用戶冷啓動小程序的次數(比如電商小程序需要統計銷售業績、轉化率等等)。

在這裏插入圖片描述

onShow(Object object)

小程序啓動,或從後臺進入前臺顯示時觸發。也可以使用 wx.onAppShow 綁定監聽。

onHide

小程序從前臺進入後臺時觸發。也可以使用 wx.onAppHide 綁定監聽。

onError(String error)

小程序發生腳本錯誤API 調用報錯時觸發。也可以使用 wx.onError 綁定監聽。
一般我們可以在這裏上報異常錯誤點,用來檢測我們小程序的整體運行情況,比如說剛上線的功能突然錯誤日誌增多,那麼我們可能需要考慮回滾或者快速上線一個Bug Fix版本。

onPageNotFound(Object object)

小程序要打開的頁面不存在時觸發。也可以使用 wx.onPageNotFound 綁定監聽。
注意事項請參考 wx.onPageNotFound。

一般,當觸發了這個函數,也就意味着我們的Page頁面可能出現問題或者路由路徑編寫錯誤,需要給到用戶一個友好的兜底方案。

App({
  onPageNotFound(res) {
    // 搞一個兜底方案
    wx.redirectTo({
      url: 'pages/...'
    }) // 如果是 tabbar 頁面,請使用 wx.switchTab
  }
})

onUnhandledRejection(Object object)

小程序有未處理的 Promise 拒絕時觸發。也可以使用 wx.onUnhandledRejection 綁定監聽。注意事項請參考 wx.onUnhandledRejection。

程序的生命週期和打開場景

首先,要有一個前後臺的概念,跟android開發一樣的邏輯。

初次進入小程序的時候,微信客戶端初始化好宿主環境,同時從網絡下載或者從本地緩存中拿到小程序的代碼包,把它注入到宿主環境,初始化完畢後,微信客戶端就會給App實例派發onLaunch事件,App構造器參數所定義的onLaunch方法會被調用。

進入小程序之後,用戶可以點擊右上角的關閉,或者按手機設備的Home鍵離開小程序,此時小程序並沒有被直接銷燬,我們把這種情況稱爲“小程序進入後臺狀態”,App構造器參數所定義的onHide方法會被調用。

當再次回到微信或者再次打開小程序時,微信客戶端會把“後臺”的小程序喚醒,我們把這種情況稱爲“小程序進入前臺狀態”,App構造器參數所定義的onShow方法會被調用。

我們可以看到,App的生命週期是由微信客戶端根據用戶操作主動觸發的。爲了避免程序上的混亂,我們不應該從其他代碼裏主動調用App實例的生命週期函數。

在微信客戶端中打開小程序有很多途徑:從羣聊會話裏打開,從小程序列表中打開,通過微信掃一掃二維碼打開,從另外一個小程序打開當前小程序等,針對不同途徑的打開方式,小程序有時需要做不同的業務處理,所以微信客戶端會把打開方式帶給onLaunch和onShow的調用參數options.

要獲取最新的場景值說明請查看官方文檔:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/app.html

需要注意的是:只有當小程序進入後臺一定時間,或者系統資源佔用過高,纔會被真正的銷燬。

App({
   onLaunch: function () {
      console.log(“App生命週期函數——onLaunch函數”);
   },
   
   onShow: function () {
      console.log(“App生命週期函數——onShow函數”);
   },
   
   onHide: function () {
      console.log(“App生命週期函數——onHide函數”);
   },
   
   onError: function (msg) {
      console.log(“App生命週期函數——onError函數”);
   }
});
  • 首次啓動小程序
    1)當小程序初始化完成時,會觸發 onLaunch(全局只觸發一次)
    2)當小程序啓動,或從後臺進入前臺顯示,會觸發 onShow

  • 當點擊“後臺”時,會觸發以下函數
    1)當小程序從前臺進入後臺,會觸發 onHide
    2)當點擊“前臺”時,就會再次觸發onShow函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章