找回密码
 立即注册

微信小程序生命周期详解

匿名  发表于 2023-2-17 09:54:19 阅读模式 打印 上一主题 下一主题
微信客户端在翻开小法式之前,会把全部小法式的代码包下载到当地。
紧接着经过 app.json 的 pages 字段便可以晓得你当前小法式的一切页面途径

{
  "pages": ["pages/index/index", "pages/logs/logs"]
}
这个设置说明在项目中界说了两个页面,别离位于 pages/index/index 和 pages/logs/logs。而写在 pages 字段的第一个页面就是这个小法式的首页(翻开小法式看到的第一个页面)。
因而微信客户端就把首页的代码装载进来,通太小法式底层的一些机制,便可以衬着出这个首页。
以上是微信小法式官方的诠释。

小法式在启动前需要停止注册,而小法式的注册只能且必须在app.js中利用App()函数来处置,而且不能注册多个。
小法式第一翻开时将会下载全部小法式代码包,然后经过app.json设置初始化App,页面就会起头衬着首页,初始化完成后,履行App中onLauch()函数和onShow()函数,然后才履行页面中的onLoad()和onShow(),当小法式每次进入背景(当用户点击左上角封闭,大概按了装备 Home 键分开微信)城市先履行页面中的onHide()函数再履行app.js中的onHide()函数,每次进入前台城市先履行app.js中onShow()函数再履行页面中的onShow()函数。

我们先领会一下前台和背景的概念
前台、背景界说: 当用户点击左上角封闭大概按了装备 Home 键分开微信,小法式并没有间接烧毁,而是进入了手机背景;当再次进入微信(iphone)或再次翻开小法式,又会从背景进入前台。
需要留意的是:只要当小法式进入背景一按时候,大概系统资本占用太高,才会被实在的烧毁。当小法式进入背景,客户端会保持一段时候的运转状态,跨越一按时候后(今朝是5分钟)会被微信自动烧毁。在 iOS 上,当微信客户端在一按时候间隔内(今朝是 5 秒)持续收到两次及以上系统内存告警时,会自动停止小法式的烧毁,并提醒用户 「该小法式能够致使微信响应变慢被停止」。倡议小法式在需要时利用 wx.onMemoryWarning 监听内存告警事务,停止需要的内存清算。这个就是小法式的运转机制。

用户第一次进入小法式大概在小法式烧毁后再次进入小法式是为“冷启动”。
小法式的冷启动:小法式在冷启动时会依次触发onLaunch—>onShow
小法式的热启动:小法式在热启动时会触发onShow
小法式封闭时:即小法式畴前台进入背景时触发onHide
小法式启动会有两种情况,一种是「冷启动」,一种是「热启动」。 假如用户已经翻开过某小法式,然后在一按时候内再次翻开该小法式,此时无需重新启动,只需将背景态的小法式切换到前台,这个进程就是热启动;冷启动指的是用户初次翻开或小法式被微信自动烧毁后再次翻开的情况,此时小法式需要重新加载启动。

小法式的生命周期:
App({

  /**
   * 当小法式初始化完成时,会触发 onLaunch(全局只触发一次)
   */
  onLaunch: function (options) {
    console.log('App:onLaunch')
    console.log(options)
  },

  /**
   * 当小法式启动,或从背景进入前台显现,会触发 onShow
   */
  onShow: function (options) {
    console.log('App:onShow')
    console.log(options)
  },

  /**
   * 当小法式畴前台进入背景,会触发 onHide
   */
  onHide: function () {
    console.log('App:onHide')
  },

  /**
   * 当小法式发生剧本毛病,大概 api 挪用失利时,会触发 onError 并带上毛病信息
   */
  onError: function (msg) {

  }
})
小法式页面的生命周期:
Page({

  /**
   * 页面的初始数据
   */
  data: {
   
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log('index:onLoad')
  },

  /**
   * 生命周期函数--监听页面初度衬着完成
   */
  onReady: function () {
    console.log('index:onReady')
  },

  /**
   * 生命周期函数--监听页面显现
   */
  onShow: function () {
    console.log('index:onShow')
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    console.log('index:onHide')
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
   
  },

  /**
   * 页面相关事务处置函数--监听用户下拉行动
   */
  onPullDownRefresh: function () {
   
  },

  /**
   * 页面上拉触底事务的处置函数
   */
  onReachBottom: function () {
   
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
   
  }
})

以上代码运转的成果是

微信小法式生命周期详解-1.jpg

代码成果

更新机制
小法式冷启动时假如发现有新版本,将会异步下载新版本的代码包,并同时用客户端当地的包停止启动,即新版本的小法式需要等下一次冷启动才会利用上。 假如需要顿时利用最新版本,可以利用 wx.getUpdateManager API 停止处置。

const updateManager = wx.getUpdateManager()
    updateManager.onCheckForUpdate(function (res) {
      // console.log(res.hasUpdate)
    })
    updateManager.onUpdateReady(function () {
      wx.showModal({
        title: '更新提醒',
        content: '新版本已经预备好,能否重启利用?',
        success: function (res) {
          if (res.confirm) {
            // 新的版本已经下载好,挪用 applyUpdate 利用新版本并重启
            updateManager.applyUpdate()
          }
        }
      })
    })
    updateManager.onUpdateFailed(function () {
      // 新的版本下载失利
      wx.showModal({
        title: '更新提醒',
        content: '新版本下载失利',
        showCancel: false
      })
    })以上是强迫用户更新小法式代码的方式,假如拒绝重新启动的话,小法式是没法进入的,除非完全封闭小法式,然后冷启动。
回复

使用道具

说点什么

您需要登录后才可以回帖 登录 | 立即注册
HOT • 推荐

神回复

站长姓名:王殿武 杭州共生网络科技 创始人 云裂变新零售系统 创始人 飞商人脉对接平台 创始人 同城交友聚会平台 创始人 生活经验分享社区 创始人 合作微信:15924191378(注明来意)