启动
小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」。 假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是热启动;冷启动指的是用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动。
更新机制
小程序冷启动时如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。 如果需要马上应用最新版本,可以使用 wx.getUpdateManager API 进行处理。
运行机制
- 小程序没有重启的概念
- 当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是5分钟)会被微信主动销毁
- 当短时间内(5s)连续收到两次以上收到系统内存告警,会进行小程序的销毁
更新小程序代码:
根据微信提供的api,可以检测是否小程序有新版本
代码如下
// 检测是否可以调用getUpdateManager检查更新
if (!wx.canIUse("getUpdateManager")) return;
let updateManager = wx.getUpdateManager();
// 获取全局唯一的版本更新管理器,用于管理小程序更新
updateManager.onCheckForUpdate(function (res) {
// 监听向微信后台请求检查更新结果事件
console.log("是否有新版本:"+res.hasUpdate);
if(res.hasUpdate){
//如果有新版本
// 小程序有新版本,会主动触发下载操作
updateManager.onUpdateReady(function () {
//当新版本下载完成,会进行回调
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,单击确定重启小程序',
showCancel:false,
success: function (res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启小程序
updateManager.applyUpdate();
}
}
})
})
// 小程序有新版本,会主动触发下载操作(无需开发者触发)
updateManager.onUpdateFailed(function () {
//当新版本下载失败,会进行回调
wx.showModal({
title: '提示',
content: '检查到有新版本,但下载失败,请稍后尝试',
showCancel: false,
})
})
}
});