微信小程序自动检测新版本并静默更新,及热启动和冷启动
举个栗子,小程序发现紧急bug经修改后上线一个新版本,如果新用户还好打开就会是你新上线的最新版本,但是老用户手机上的小程序还是之前的旧版本,到此你就会想,怎样才能让老用户知道小程序版本更新了呢?
1、运行机制
前台/后台状态
小程序启动后,界面被展示给用户,此时小程序处于前台状态。
当用户点击右上角胶囊按钮关闭小程序,或者按了设备 Home 键离开微信时,小程序并没有完全终止运行,而是进入了后台状态,小程序还可以运行一小段时间。
当用户再次进入微信或再次打开小程序,小程序又会从后台进入前台。但如果用户很久没有再进入小程序,或者系统资源紧张,小程序可能被销毁,即完全终止运行。
小程序启动
小程序启动可以分为两种情况,一种是冷启动,一种是热启动。
冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。
热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动
2、小程序销毁时机
通常,只有当小程序进入后台一定时间,或者系统资源占用过高,才会被销毁。具体而言包括以下几种情形:
当小程序进入后台,可以维持一小段时间的运行状态,如果这段时间内都未进入前台,小程序会被销毁。
当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。
在 iOS 上,当微信客户端在一定时间间隔内连续收到系统内存告警时,会根据一定的策略,主动销毁小程序,并提示用户 「运行内存不足,请重新打开该小程序」。具体策略会持续进行调整优化。
建议小程序在必要时使用 wx.onMemoryWarning
监听内存告警事件,进行必要的内存清理。
基础库 1.1.0 及以上,1.4.0 以下版本: 当用户从扫一扫、转发等入口(场景值为1007, 1008, 1011,
1025)进入小程序,且没有置顶小程序的情况下退出,小程序会被销毁。
3、更新机制
小程序冷启动时如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。 如果需要马上应用最新版本,可以使用 wx.getUpdateManager
API 进行处理。
4、更新API
wx.getUpdateManager()
使用该接口,可以获知是否有新版本小程序、新版本是否下载好以及应用新版本的能力。注:(将下面代码放到app.js的onLaunch方法里即可)
/*** 版本更新机制兼容低版本代码*/
function checkUpdate(){// 判断当前微信版本是否支持检测更新接口,注:(基础库版本大于v1.9.90才可以使用getUpdateManager接口所以要做低版本兼容处理)if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager();// 请求完新版本信息的回调updateManager.onCheckForUpdate(function (res) {// 如有新版本则进行静默下载更新并提示if(res.hasUpdate){ // 新版本下载成功updateManager.onUpdateReady(function () {wx.showModal({title: '更新提示',content: '发现版本更新,已经准备好请重启应用~',showCancel:false,success(res) {if (res.confirm) {// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启updateManager.applyUpdate();}}})});// 新版本下载失败updateManager.onUpdateFailed(function () {wx.showModal({title: '更新提示',content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',showCancel:false})})}});}else{// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示wx.showModal({title: '提示',content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。',success(res) {if (res.confirm) {// 使用此接口可直接跳转至微信客户端更新下载页面wx.updateWeChatApp();}}})}
}
温馨提示:发布的第一版不会生效,下一版才会生效的
微信小程序自动检测新版本并静默更新,及热启动和冷启动相关推荐
- 微信小程序自动检测版本并提示更新新版本
微信小程序自动检测版本并提示更新新版本 微信小程序开发过程中,我们在版本更新迭代后,微信小程序客户端并不能触发自动更新,需要用户手动清理小程序后重新搜索进入后才能获取到最新的小程序版本,但是这个是用户 ...
- 微信小程序自动检测更新新版本
app.js设置 App({onShow(){this.autoUpdate() //更新新版本},autoUpdate() { //更新新版本var self = this// 获取小程序更新机制兼 ...
- python玩微信小程序游戏_使用python实现微信小程序自动签到功能
功能描述目标 完成多账号微信小程序每天自动签到 输出 签到成功则向微信群发送签到成功的信息 否则提示用户签到失败,需手动签到 包管理 requests itchat time threading 程序 ...
- 使用python实现微信小程序自动签到2.0
微信小程序自动签到 功能描述 目标 输出 包管理 程序的结构设计 步骤1 步骤2 步骤3 步骤4 代码实现 使用findler抓包工具查看请求类型 再次使用findler抓包,查看请求内容 使用多线程 ...
- es6 去掉空格_微信小程序自动去除input空格的方法
当用户输入账号或者密码的时候,可能会有输入空格的情况,但是实际需要是不能够有空格的,所以我们要做一个去除空格,并且适应所有input的name参数的方法,下面请看源码: wxml: js: verif ...
- 微信小程序 自动对对联
微信小程序 自动对对联 微信扫描二维码体验吧
- 提供一个小工具:微信小程序自动转码机器人!供大家24小时免费使用!
弄个微信小程序自动转码机器人就可以完成,今天把我的机器人安排给大家,外面很多都是收费的,2毛钱转一次,这个钱真没必要花,我的机器人供大家24小时免费用,下面简单介绍一下机器人的功能. 目前我的机器人, ...
- 核酸预约小程序,微信小程序核酸检测,核酸检测预约小程序系统毕业设计作品
项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序医院核酸检测预约挂号系统,前台用户使用小程序,后台管理使用基Java+MySql技术:通过后台设置相关信息,录入医疗机构信息.管理 ...
- 微信小程序云开发数据库update函数更新不了数据的问题(已解决)
最近在做一个毕业项目的小程序,数据库是微信小程序自带的,在更新数据时发现一只更新不了,查了好久说是权限问题叫我使用云函数,我也是用了但是没有用.update函数调用成功单返回的却是0行记录被更新.但我 ...
最新文章
- PHP PSR-2 代码风格规范 (中文版)
- 使WEBBROWSER 可编辑
- 暑期应用开发怎么玩?申请蓝牙Mesh网关操控家里的一切
- 新版本springboot-整合多数据源拆分思路
- SAP UI5 标准应用的多语言支持 - SAP UI5 运行时语言判定机制
- c语言从1加到任意数的编程,c语言:从键盘任意输入一个整数n,编程计算并输出1-n之间的所有素数之和...
- android debug bridge tools_飞凌干货丨Android 应用程序如何获取system权限
- 浏览器的两种模式quirks mode 和strict mode
- vue引用jquery
- 5000字彻底道尽「区块链分叉」真相!
- EIGRP路由协议实现网络互联
- 在线二进制取余计算机,十进制转二进制和十六进制计算器
- web前端开发前景如何?
- 统一社会信用代码校验规则
- NYOJ - 小柯的编译器
- namesilo修改域名服务器,Namesilo 域名设置 A记录
- 宏碁服务器u盘装系统,宏基笔记本用u盘装系统操作流程
- 哪款蓝牙耳机跑步好用?跑步好用的耳机推荐
- 微信小程序picket绑定数组对象
- VS2019安装教程(C语言)
热门文章
- 易知微当选中国互联网协会数字孪生技术应用工作委员会成员单位
- Exceeded checkpoint tolerable failure threshould【记一次flink上线异常】
- mysql where in()
- python m4a转mp3_python脚本实现音频m4a格式转成MP3格式
- m4a格式怎么转换成mp3,非常简单
- java 新浪短链接_java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java | 学步园...
- layui教程(一) form 表单的提交问题
- RISC-V架构能否引领物联网时代?
- 长沙市民吴先生乘坐滴滴D1后,取消了买特斯拉的计划
- conductor restart和rerun机制