小程序的运行机制、更新机制、生命周期介绍保姆级教程全解

一、小程序运行机制

在这里插入图片描述

1. 小程序冷启动

	小程序启动可以分为两种情况,一种是冷启动,一种是热启动
	 - 冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动
	 - 热启动:如果用户已经打开过某小程序,然后再一定时间内再次打开该小程序,此时小程序并
	          未被销毁,只是从后台状态进入前台状态

2. 前台和后台状态

小程序启动后,界面被展示给用户,此时小程序处于【前台】状态。
当用户【关闭】小程序时(通过以下图片形式 ),并没有真正被关闭,而是进入了【后台】状态,
当用户再次进入微信并打开小程序,小程序优惠重新进入【前台】状态

在这里插入图片描述

3. 切前台和切后台

小程序启动后,界面被展示给用户,此时小程序处于【前台】状态。
当用户【关闭】小程序时,小程序并没有真正被关闭,而是进入了【后台】状态,当用户再次进入微信并打开
小程序,小程序又会重新进入【前台】状态

4. 挂起

小程序进入【后台】状态一段时间后(5秒),微信停止小程序JS线程执行,小程序进入【挂起】状态,
当开发者使用了后台播放音乐、后台地理位置等能力时,小程序可以再后台持续运行,不会进入到挂起状态

5. 销毁

如果用户很久没有使用小程序,或者系统资源紧张,小程序会被销毁,即完全终止运行。
当小程序进入后台并被【挂起】后,如果很长时间(目前时30分钟)都未再次进入前台,小程序会被销毁
当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。

二、小程序更新机制

	在访问小程序时,微信会将小程序代码包缓存到本地。
	开发者在发布了新的小程序版本后,微信客户端会检查本地缓存的小程序有没有新版本,
	并进行小程序代码包的更新。
	小程序的更新机制有两种:启动时同步更新和启动时异步更新。

1. 启动时同步更新

	微信运行时,会定期检查最近使用的小程序是否有更新,如果有更新,
	下次小程序启动时会同步进行更新,更新到最新版本后再次打开小程序,如果用户长时间
	未使用小程序时,会强制同步检查版本更新。

2. 启动时异步更新

在启动前没有发现更新,小程序每次 冷启动 时,都会异步检查是否有更新版本。如果发现有新
版本,将会异步下载新版本的代码包,将新版本的小程序在下一次冷启动进行使用,当前访问
使用的依然时本地的旧版本代码

3. 在启动异步更新的情况下,如果开发者希望立即进行版本更新,可以使用 wx.getUpdateManager API 进行处理。在有新版本时提示用户启动小程序更新版本。

// app.js
App({
  // 小程序的钩子函数,这个钩子函数在冷启动时会执行到
  // 当小程序冷启动时,会自动向微信后台请求新版本的信息,如果有新版本,会立即进行下载
  onLaunch(){
    // 使用 wx.getUpdateManager 方法监听下载的状态
    const updataManager=wx.getUpdateManager()
    // 当下载完成新版本以后,会触发 onUpdateReady 回调函数
    updataManager.onUpdateReady(function(){
      // 在回调函数中给用户提示
      wx.showModal({
        title: '更新提示',
        content: '新版本已经准备好,是否重新启用',
        success(res){
          if (res.confirm) {
            // 强制当前小程序使用新版本并且会重启当前小程序
            updataManager.applyUpdate()
          }
        }
      })
    })
  }
})

三、小程序生命周期

1. 小程序生命周期介绍

应用生命周期是指应用程序进程从创建到消亡的整个过程
小程序的生命周期指的是 小程序从启动到销毁的整个过程。
一个小程序完整的生命周期由 应用生命周期、页面生命周期和组件生命周期 三部分来组成。
小程序生命周期伴随着一些函数,这些函数由小程序框架本身提供,被称为生命周期函数,生命周期函数会
按照顺序一次自动触发调用。
帮助程序员在特定的时机执行特定的操作,辅助程序员完成一些比较复杂的逻辑。

2. 应用生命周期

应用生命周期通常是指一个程序从 启动--->运行--->销毁的整个过程
应用生命周期伴随着一些函数,我们称为 应用生命周期函数,应用生命周期函数需要 在 app.js文件的App()
方法中进行定义,App()方法必须在app.js中进行调用,主要用来注册小程序。
应用生命周期函数由 onLaunch 、onShow、onHide 三个函数组成。

在这里插入图片描述

3. 页面生命周期

页面生命周期就是小程序页面从加载--->运行--->销毁的整个过程
页面生命周期函数需要在Page()方法进行定义

在这里插入图片描述
注意:onLoad 和哦那Ready函数一个页面只会调用一次

Page({
  onLoad: function (options) {
    console.log('onLoad 页面创建的时候执行')
  },
  onReady: function () {
    console.log('onReady 页面初次渲染完成时触发,代表页面已经准备妥当,可以和视图层进行交互')
  },
  onShow: function () {
    console.log('onShow 页面在前台展示的时候')
  },
  onHide: function () {
    console.log('onHide 当前页面页面隐藏')
  },
  onUnload: function () {
    console.log('onUnload 当前页面页面被销毁时触发')
  }
})

4.生命周期两个细节

  • tabBar 页面之间相互切换,页面不会被销毁
  • 点击左上角,返回上一个页面,会销毁当前页面
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/761611.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

植物大战僵尸杂交版手机下载与安装全攻略

植物大战僵尸杂交版是一款深受玩家喜爱的策略冒险游戏,以其丰富的植物种类、多样的关卡设计和趣味的玩法著称。本文将为您提供详细的下载与安装教程,帮助您快速上手,享受游戏带来的乐趣。 游戏简介 植物大战僵尸杂交版在传统玩法的基础上&a…

使用React复刻ThreeJS官网示例——keyframes动画

最近在看three.js相关的东西,想着学习一下threejs给的examples。源码是用html结合js写的,恰好最近也在学习react,就用react框架学习一下。 本文参考的是threeJs给的第一个示例 three.js examples (threejs.org) 一、下载threeJS源码 通常我们…

视频监控业务平台LntonCVS国标视频综合管理平台功能及技术优势

随着安防行业的快速进步,传统的视频监控平台正在与先进的技术和互联网技术融合,包括5G通信、GIS、大数据、云计算、边缘计算、AI识别、智能分析和视频直播等。这些技术的整合形成了综合性视频监控管理平台,具备集中管理、多级联网共享、互联互…

中霖教育怎么样?税务师通过率高吗?

中霖教育怎么样?税务师通过率高吗? 我们在税务师考试培训方面有着不错的成绩,这都是老师与学员共同努力的结果。 采用小班教学模式,确保每位学员都能得到足够的关注和指导,在学习过程中针对学员的薄弱环节进行专项突破。 因为大部分学员…

Soul探索未来智能互动模式,人机交互重塑社交元宇宙体验

在当今快速发展的科技领域中,人机交互已成为一个备受关注的话题。随着人工智能和机器学习技术的不断进步,人们与计算机和智能设备之间的互动方式正在发生翻天覆地的变化。这种交互不止局限于键盘和鼠标,更涵盖了语音识别、手势控制、虚拟现实等多种形式。人机交互的创新不仅提高…

什么样的网工才是有前途的?

最近整个就业市场的变化,搞得人心惶惶。 可能很多朋友都在思考这样一个问题:现在做网工还有前途吗?什么样的网工才是有前途的?考HCIE认证还来得及吗? 作为网络工程师,该如何确保自己的职业发展方向正确&a…

Linux[高级管理]——Squid代理服务器的部署和应用(反向代理详解)

🏡作者主页:点击! 👨‍💻Linux高级管理专栏:点击! ⏰️创作时间:2024年6月24日11点11分 🀄️文章质量:95分 目录 ————前言———— Squid的几种模式…

咖啡消费旺季到来 为何想转让的库迪联营商却越来越多

文 | 智能相对论 作者 | 霖霖 去年还在朝“三年万店”计划狂奔的库迪,今年已出现明显“失速”。 早在今年2月,库迪就官宣其门店数已超过7000家,如今4个多月过去,据极海品牌监测数据显示,截至6月27日,其总…

数据库断言-数据库连接池

原因:现在的代码是单线程,如果遇到大并发的话就会崩溃,数据库查询就查不过来 措施:需要建立数据库连接池,可以设置连接池的数量 什么是大并发:很多客户端在idea写的程序和数据库建立连接 步骤&#xff1…

C++中的类型转换操作符:static_cast reinterpret_cast const_cast dynamic_cast

目录​​​​​​​ C语言中的类型转换 C中的类型转换 C中的类型转换操作符 static_cast reinterpret_cast const_cast volatile关键字 赋值兼容 dynamic_cast C语言中的类型转换 基本概念:赋值运算符左右两侧类型不同,或形参与实参类型不匹配…

数学知识——欧拉函数

数学知识(二) 20240628 求和N互质的个数公式 先分解N,再求个数fai n欧拉函数的证明:用容斥原理 不考 求质因子 p1, … , pk 1-N中与N互质的个数, 去掉质因子倍数 是pi的倍数的有N/pi个,但是会有既是p1也是…

计算机人说学校-南京大学-计算机方向

1. 专长、特点与特色 南京大学计算机专业在国内外享有很高的声誉,其专长、特点和特色主要体现在以下几个方面: 理论性强:重视数学、逻辑、数据结构、算法、电子设计、计算机体系结构和系统软件等方面的理论基础和专业技术基础。实践性强&am…

大厂10余年经验总结,用户研究领域入门标准书籍来了!

《用户研究方法:卓越产品和服务的用户研究技巧》一书近期出版,本书是用户研究领域入门标准书籍,是一本带你进入用户研究世界,通过研究用户让您工作更出色的书籍。 内容及特色 本书共 10 章,分为三篇。 第一篇&#xf…

Qt实现手动切换多种布局

引言 之前写了一个手动切换多个布局的程序,下面来记录一下。 程序运行效果如下: 示例 需求 通过点击程序界面上不同的布局按钮,使主工作区呈现出不同的页面布局,多个布局之间可以通过点击不同布局按钮切换。支持的最多的窗口…

鸿蒙应用更新跳转到应用市场

鸿蒙没有应用下载安装,只支持跳转到应用市场更新 gotoMarket(){try {const request: Want {parameters: {// 此处填入要加载的应用包名,例如: bundleName: "com.huawei.hmsapp.appgallery"bundleName: com.huawei.hmos.maps.app}}…

昇思25天学习打卡营第8天|模型训练

昇思25天学习打卡营第8天|模型训练 前言模型训练构建数据集定义神经网络模型定义超参、损失函数和优化器超参损失函数优化器 训练与评估 个人任务打卡(读者请忽略)个人理解与总结 前言 非常感谢华为昇思大模型平台和CSDN邀请体验昇思大模型!从…

PFA滴定管带阀门耐酸碱本底值低

一、产品介绍 酸式滴定管为一细长的管状容器,一端具有活栓开关用来控制滴定的速度,其上具有刻度指示量度,是分析化学中常用的滴定仪器。可用于进行酸碱中和滴定试验等,量取对橡皮有侵蚀作用的液体。 我司生产的PFA酸式滴定管是用…

全球3DMAX插件界又更新了什么?

“3DMAX插件界”不这样称呼又叫他们什么呢?顾名思义就是开发3dmax插件的那个圈子。现在的3D类软件越来越多,但是,3dmax的地位仍然举足轻重。3dmax软件之所以受欢迎,不仅仅是因为自身的功能强大,还有其良好的可扩展性&a…

哪个麦克风音质好,麦克风哪种好,2024年热门家用麦克风推荐

​在这个信息爆炸的时代,网络直播和短视频成为了人们获取信息、娱乐和社交的重要方式。作为自媒体人,拥有一款优秀的领夹式无线麦克风是必不可少的。它不仅能够帮助你在各种环境中保持清晰的声音,还能提升你的作品质量和专业度。然而&#xf…

Parade接口芯片选型和应用,点击查看!

01 常见数据 / 媒体接口电路 接口电路是电子设备之间,电子设备与外围设备之间,电子设备内部部件之间起连接作用的逻辑电路,接口电路是设备处理器与外部设备进行信息交互的桥梁。 图1:常见高速数据/多媒体接口 1.1 USB接口 从最早…