小程序运行机制 - 小程序启动
- 冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。
- 热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。
小程序更新机制
-
启动时同步更新
1.1. 定期检查发现版本更新:微信运行时,会定期检查最近使用的小程序是否有更新。如果有,下次启动打开新版。
1.2. 用户长时间未使用小程序:会强制同步检查版本更新。(下载新版失败,还是会用本地旧版) -
启动时异步更新
2.1. 小程序每次冷启动时,都会异步检查是否有更新版本。如果发现有新版本,将会异步下载新版本的代码包。但当次启动仍会使用客户端本地的旧版本代码,即新版本的小程序需要等下一次冷启动才会使用。
所以我们要处理的是:热启动
时检测更新,如果有就强制更新。在 onShow
生命周期中监听。
uni.getUpdateManager
const updateManager = uni.getUpdateManager();
export default {
data() { return {}; },
onShow: function() {
// 当向小程序后台请求完新版本信息,会进行回调。res: {hasUpdate: true, version: 1.0.0}
updateManager.onCheckForUpdate(function (res) {
if (res.hasUpdate) { // 有更新
uni.showLoading({title:'更新中...'}); // 开始下载前,显示Loading
}
});
// 当新版本下载完成,会进行回调
updateManager.onUpdateReady(function () {
uni.hideLoading(); // 关闭 Loading
uni.showModal({ // 弹确认框(强制更新)
title:'更新提示',
content:'更新完毕,是否重启?',
success:function (res) {
if (res.confirm) {
updateManager.applyUpdate(); // 强制小程序重启并使用新版本。
}
}
})
});
// 当新版本下载失败,会进行回调
updateManager.onUpdateFailed(function () {
uni.hideLoading(); // 关闭 Loading
uni.showToast({ title:'更新失败,稍后再试...', icon:"error" });
});
},
methods: { }
};
以上外码中使用 uni
如果直接是微信小程序项目换成 wx
即可。
开发环境调试
- 微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试
- 小程序开发版/体验版没有「版本」概念,所以无法在开发版/体验版上测试更版本更新情况
参考资料
uni.getUpdateManager()文章来源:https://www.toymoban.com/news/detail-782608.html
小程序运行机制
小程序更新机制
wx.getUpdateManager文章来源地址https://www.toymoban.com/news/detail-782608.html
到了这里,关于uniapp 微信小程序:更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!