微信小程序学习记录(二):运行机制与生命周期


运行机制

1.启动

冷启动和热启动

  小程序的启动情况分为冷启动热启动 两种

  • 冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。

  • 热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。

自动销毁时机

  通常,只有当小程序进入后台一定时间,或者系统资源占用过高,才会被销毁。具体而言包括以下几种情形:

  1. 当小程序进入后台,可以维持一小段时间的运行状态,如果这段时间内都未进入前台,小程序会被销毁。通常系统会自动维持5-10分钟。

  2. 当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。当微信客户端在一定时间间隔内连续收到系统内存告警时,会根据一定的策略,主动销毁小程序。该时间间隔一般为5-10秒钟。

启动时更新

  小程序每次冷启动时,都会检查是否有更新版本,如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。

如果需要马上应用最新版本,可以使用wx.getUpdateManager API 进行处理。

代码如下(示例):

const updateManager = wx.getUpdateManager()

updateManager.onCheckForUpdate(function (res) {
  // 请求完新版本信息的回调
  console.log(res.hasUpdate)
})

updateManager.onUpdateReady(function () {
  wx.showModal({
    title: '更新提示',
    content: '新版本已经准备好,是否重启应用?',
    success(res) {
      if (res.confirm) {
        // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
        updateManager.applyUpdate()
      }
    }
  })
})

updateManager.onUpdateFailed(function () {
  // 新版本下载失败
})

2.加载

微信启动流程图
  左边部分是微信中的视图层与逻辑层的一些交互逻辑以及数据缓存的存取操作。

  小程序启动时会向CDN请求最新的代码包,第一次启动时需要下载代码包并加载到 View 容器中才可以看到小程序的页面。所以在网络不好的情况下会感受到启动时间稍长。启动后,客户端会缓存该代码包以便下次使用。

CDN:内容分发网络,主要作用为把客户请求的内容分发到最近的网络节点,提高用户访问的响应速度以及成功率,可以解决一些带宽和服务器性能带来的延迟问题。


生命周期

1.程序生命周期

在这里插入图片描述

  • onLaunch:小程序初始化完成后,客户端会给逻辑层的 app.js 的app实例派发onLaunch事件,此时onLaunch方法便会调用。
  • onShow:显示小程序页面或者重新回到小程序页面时,onShow方法会被调用。即前台状态。
  • onHide:当使用右小角 × 键或手机home键离开小程序时,小程序没有被销毁,而是调用了onHide方法隐藏起来。即后台状态。
  • onError:小程序发生脚本错误或者API调用失败时,会触发APP构造器中的 onError 方法,传入错误信息。
  • globaData:小程序全局数据。

2.页面生命周期

在这里插入图片描述

  • onLoad:页面初次加载时,微信客户端会给所在逻辑层定义的一个page实例分发一个onLoad事件,page构造器所定义的onLoad方法便会被调用,该方法在页面没有被销毁之前只会调用一次,在onLoad的回调中便可以取得当前页面所调用的一些参数。
  • onShow:当页面显示后,page构造器所定义的onShow方法就会被调用。有两种情况会调用该方法,一种与上述程序生命周期的相同,另一种为当从别的页面返回到该页面时,onShow也会被调用。
  • onReady:当页面初次渲染完成之后,page构造器所定义的onReady方法就会被调用,onReady是在onShow之后调用的。onReady触发后,逻辑层便可以和视图层进行交互。
  • onHide:在当前页面的基础上打开别的页面时,当前页面的onHide方法便会调用。
  • onUnload:在关闭当前页面时,onUnload方法便会被调用。
  • data:当前小程序页面的数据。

以下是微信开放文档中所展示的page实例的生命周期
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页