小程序全量发布之后还是之前的版本

小程序全量发布之后还是之前的版本
? 刚刚将小程序全量发布之后,想着进入小程序测试一下新功能有没有什么问题,进行最后一道保险的检查,如果有问题也好随时撤回。这一测发现哪有什么新功能,简直就是之前的版本。
? 这时候就需要分析找原因了,首先之前也发布过新版本,一进入小程序就可以直接使用,所以不可能是没有发布成功的问题;那就只剩下一个原因了,提交的代码不对,遂检查提交的代码,发现代码在本地运行没有问题;这么说,问题出现在编译器上,编译器上传代码时发生了错误(之前发生过编码过程中发编译器突然黑屏,然后被强制关闭,再次打开发现丢失部分代码)
? 立马提交了一个新版本,等待审核的过程中打开小程序,发现有新功能了,功能了,了。(没有撤回版本,虽然没有新功能,但是老的功能不受影响,想着直接用下一次版本直接覆盖就好了)
? 又是一场没有bug的bug,但是还是要来找一下虚惊一场的原因,总结下自己在这个过程中的错误和不足。
原因: 讲原因之前有两个概念需要先了解一下热启动冷启动

【小程序全量发布之后还是之前的版本】? 小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」。 假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是热启动;冷启动指的是用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动。
原因其实就是没有理解小程序的更新机制
? 小程序冷启动时如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。 如果需要马上应用最新版本,可以使用 wx.getUpdateManager API 进行处理。
注意 这里是冷启动时发现有新版本才下载代码包,如果是热启动的话是不会下载的。
扩展内容之小程序运行机制
  • 小程序没有重启的概念
  • 当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是5分钟)会被微信主动销毁
  • 在 iOS 上,当微信客户端在一定时间间隔内(目前是 5 秒)连续收到两次及以上系统内存告警时,会主动进行小程序的销毁,并提示用户 「该小程序可能导致微信响应变慢被终止」。建议小程序在必要时使用 wx.onMemoryWarning 监听内存告警事件,进行必要的内存清理。
扩展内容之小程序再次打开逻辑
基础库 1.4.0 开始支持,低版本需做兼容处理。
用户打开小程序的预期有以下两类场景:
A. 打开首页: 场景值有以下几项:
场景值ID 说明
1001 发现栏小程序主入口,「最近使用」列表
1019 微信钱包
1022 聊天顶部置顶小程序入口
1023 安卓系统桌面图标
1038 从另一个小程序返回
1056 音乐播放器菜单
B. 打开小程序指定的某个页面: 场景值为除 A 以外的其他
当再次打开一个小程序逻辑如下:
上一次的场景 当前打开的场景 效果
A A 保留原来的状态
B A 清空原来的页面栈,打开首页(相当于执行 wx.reLaunch 到首页)
A 或 B B 清空原来的页面栈,打开指定页面(相当于执行 wx.reLaunch 到指定页)
总结
  • 遇到问题表现得太过慌张,以至于忽略细节。一开始说更新版本后一进入小程序就可以直接使用,但是这时候往往会有一个弹窗告诉有新版本更新(程序使用了wx.getUpdateManager检测版本),这次没有弹窗,自己没有注意到。也就是说我在发布前5分钟内进入过小程序,我这次打开小程序属于热启动,不会触发下载代码包。
  • 虽然有积极解决问题了,但是没有找到问题本质,原因在于对小程序更新机制不够了解。
  • 切记遇到问题一定要保持冷静思考,着急只会让自己更加迷失。
参考: https://developers.weixin.qq.com/miniprogram/dev/framework/operating-mechanism.html

    推荐阅读