微信小程序开发系列(二十六)·小程序运行机制(启动、前后台状态、挂起、销毁)和小程序更新机制

目录

1.  小程序运行机制

1.1  启动

1.2  前台和后台状态

1.3  挂起

1.4  销毁

2.  小程序更新机制


1.  小程序运行机制

1.1  启动

        小程序启动可以分为两种情况,一种是冷启动,一种是热启动。

        冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动。

        热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态。

1.2  前台和后台状态

        小程序启动后,界面被展示给用户,此时小程序处于「前台」状态。

        当用户「关闭」小程序时,小程序并没有真正被关闭,而是进入了「后台」状态,当用户再次进入微信并打开小程序,小程序又会重新进入「前台」状态。

1.3  挂起

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

1.4  销毁

        销毁:如果用户很久没有使用小程序,或者系统资源紧张,小程序会被销毁,即完全终止运行。

        当小程序进入后台并被「挂起」后,如果很长时间(目前是 30 分钟)都未再次进入前台,小程序会被销毁当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。

2.  小程序更新机制

        在访问小程序时,微信会将小程序代码包缓存到本地。

        开发者在发布了新的小程序版本以后,微信客户端会检查本地缓存的小程序有没有新版本,并进行小程序代码包的更新。

小程序的更新机制有两种:启动时同步更新 和 启动时异步更新

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

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

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

二者区别:

启动时同步更新:

①  在启动时同步更新的方式中,小程序会在用户打开小程序时,先下载最新版本的代码和资源文件,并等待下载完成后再进行页面渲染和交互。 

②  这种方式确保了用户在打开小程序后能够使用最新版本的功能和界面,但也会造成启动时间稍长,因为需要等待下载完成才能进入小程序。 

启动时异步更新:

①  在启动时异步更新的方式中,小程序会先使用本地缓存的代码和资源文件进行页面渲染和交互,然后在后台异步下载最新版本的代码和资源文件。 

②  用户可以立即进入小程序并开始使用,无需等待下载完成。一旦下载完成,小程序会在适当的时机(例如用户关闭小程序后再重新打开)将新版本的代码和资源应用到小程序中。 

③  这种方式可以减少用户等待时间,但用户可能在初始访问时看到较旧版本的界面和功能,直到更新完成。

        找到app.js文件,编写代码:

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

        按如图操作,添加编译页面:

        如图勾选:

        点击编译:

        需要注意的是,若是更新完,还想要再次触发页面需要:

        重新将其勾选上:

微信小程序开发_时光の尘的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据挖掘案例分析、经典案例、技术实现方案

1.数据挖掘案例分析 数据挖掘:是从大量数据中发现有用信息和模式的过程。 数据挖掘案例分析:是指通过对已有数据进行挖掘和分析,发现其中的模式和规律,并根据这些发现提出相应的解决方案和决策建议的过程。 以下是一些常见的数据…

03-快速上手RabbitMQ的5种消息模型

RabbitMQ RabbitMQ是基于Erlang语言开发的开源消息通信中间件,有几个常见概念 connections(连接): 将来publisher(消息的发送者)或者consumer(消息的接收者)都需要先与MQ建立连接 channel(通道): 建立连接后需要创建通道,生产者和消费者就是基于通道完成消息的发送和接收 ex…

_note_06

1.说一说函数的按地址传递和按值传递,他们的区别是什么? 函数的参数传递方式可以分为按地址传递(也称为按引用传递)和按值传递两种方式。按值传递是指将实际参数的值复制给形式参数,即在函数调用时,实际参数…

探索云原生数据库技术:构建高效可靠的云原生应用

数据库是应用开发中非常重要的组成部分,可以进行数据的存储和管理。随着企业业务向数字化、在线化和智能化的演进过程中,面对指数级递增的海量存储需求和挑战以及业务带来的更多的热点事件、突发流量的挑战,传统的数据库已经很难满足和响应快…

2023年终总结——跌跌撞撞不断修正

目录 一、回顾1.一月,鼓足信心的开始2.二月,焦躁不安3.三月,路还是要一步一步的走4.四月,平平淡淡的前行5.五月,轰轰烈烈的前行6.六月,看事情更底层透彻了7.七月,设计模式升华月8.八月&#xff…

04hive数仓内外部表复杂数据类型与分区分桶

hive内部表和外部表 默认为内部表,外部表的关键字 :external内部表:对应的文件夹就在默认路径下 /user/hive/warehouse/库名.db/外部表:数据文件在哪里都行,无须移动数据 # students.txt 1,Lucy,girl,23 2,Tom,boy,2…

Kafka的分区机制

Kafka的分区机制是其核心功能之一,旨在提高可扩展性和并行处理能力。下面概述了Kafka分区的基本概念和工作原理: Kafka分区基本概念 分区(Partition):Kafka中的主题(Topic)可以细分为多个分区…

政安晨:【深度学习处理实践】(五)—— 初识RNN-循环神经网络

RNN(循环神经网络)是一种在深度学习中常用的神经网络结构,用于处理序列数据。与传统的前馈神经网络不同,RNN通过引入循环连接在网络中保留了历史信息。 RNN中的每个神经元都有一个隐藏状态,它会根据当前输入和前一个时…

Java EE之wait和notify

一.多线程的执行顺序 由于多个线程执行是抢占式执行,就会导致顺序不同,同时就会导致出现问题,就比如俩个线程同时对同一个变量进行修改,我们难以预知执行顺序。 但在实际开发中,我们希望代码按一定的逻辑顺序执行&am…

计算机视觉——P2PNet基于点估计的人群计数原理与C++模型推理

简介 人群计数是计算机视觉领域的一个核心任务,旨在估算静止图像或视频帧中的行人数量。在过去几十年中,研究人员在这个领域投入了大量的精力,并在提高现有主流基准数据集性能方面取得了显著进展。然而,训练卷积神经网络需要大规…

matlab阶段学习笔记小节2

syms定义符号变量 求极限 第二题 第三题 limit(y,n,inf);求的的函数y关于自变量n在无穷处(inf)的极限 exp(2)即指数为2,底为e,也就是e^2 求导数 第一题 log(x)默认是以e为底的指数函数,也就是ln(x). 使用diff(f)对函数进行求…

算法-双指针、BFS与图论-1113. 红与黑

题目 思路 本题相当于问BFS中的当前点所在的区域连通块有多少个 Flood Fill算法 (可参考以下链接:洪水覆盖算法(Flood Fill):颜色填充-CSDN博客)本题用DFS实现Flood Fill算法DFS是否需要恢复现场:(重要&am…

新IDEA电脑环境设置

1.设置UTF-8 2.Maven 3.JRE选对

【漏洞复现】华三用户自助服务产品dynamiccontent.properties.xhtml接口处存在RCE漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

VUE+HBuilder的uniapp技术路线开发应用使用总结

使用总结 本来想做一个记录日常数据的应用,主要在Android端使用,后来发现在uniapp中使用sqllite数据库不是像原生中那样简单(所以当前准备去进行另一个路线,就是给我使用的电脑都安装一个portalble的服务端,用来记录数据&#xf…

java中使用rabbitmq

文章目录 前言一、引入和配置1.引入2.配置 二、使用1.队列2.发布/订阅2.1 fanout(广播)2.2 direct(Routing/路由)2.3 Topics(主题)2.4 Headers 总结 前言 mq常用于业务解耦、流量削峰和异步通信,rabbitmq是使用范围较广,比较稳定的一款开源产品,接下来我们使用springboot的sta…

角蜥优化算法 (Horned Lizard Optimization Algorithm ,HLOA)求解无人机路径优化

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径,使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一,它可以通过算法和模型来确定无人机的航迹,以避开障碍物、优化飞行时间和节省能量消耗。 二、算法介…

数据结构:图及相关算法讲解

图 1.图的基本概念2. 图的存储结构2.1邻接矩阵2.2邻接表2.3两种实现的比较 3.图的遍历3.1 图的广度优先遍历3.2 图的深度优先遍历 4.最小生成树4.1 Kruskal算法4.2 Prim算法4.3 两个算法比较 5.最短路径5.1两个抽象存储5.2单源最短路径--Dijkstra算法5.3单源最短路径--Bellman-…

Dataset 读取数据

Dataset 读取数据 from torch.utils.data import Dataset from PIL import Image import osclass Mydata(Dataset):def __init__(self,root_dir,label_dir):self.root_dir root_dir #根目录 dataset/trainself.label_dir label_dir #标签的后面链接目录 ants_ima…

windows系统玩游戏找不到d3dx9_43.dll缺失,无法启动此程序的解决方法

今日,我们要深入讨论d3dx9_43.dll文件的重要性及其缺失问题。最近,我也遇到了这个文件丢失的困扰,因此想借此机会与大家分享如何解决d3dx9_43.dll缺失的问题。 一.电脑d3dx9_43.dll丢失会提示什么? 关于电脑提示d3dx9_43.dll丢失…