当前位置: 首页 > news >正文

小程序的生命周期使用方法和应用场景

  1. 小程序生命周期

初始化(App Launch)

• 触发时机:小程序首次启动时。 • 主要事件:onLaunch。 • 功能与适用场景:
• 全局数据初始化:设置应用的全局状态和变量。 • 登录状态检查:判断用户是否已登录,决定是否跳转到登录页面。
• 加载配置:加载应用的基础配置,如网络请求的基础设置。 • 性能监控:初始化性能监控工具,记录启动时间等。 • 示例代码:

App({onLaunch: function(options) {console.log("小程序启动");this.checkUserLogin();this.loadAppConfig();},checkUserLogin: function() {// 检查用户登录状态},loadAppConfig: function() {// 加载应用配置}
});

前台显示(App Show)

• 触发时机:小程序从后台切换到前台,或初次启动时。 • 主要事件:onShow。 • 功能与适用场景:
• 数据刷新:从服务器获取最新数据,更新页面显示。 • 恢复用户操作:继续用户的未完成操作,如暂停的音频或视频。
• 状态检查:检查用户设备状态或地理位置。 • 示例代码:

App({onShow: function(options) {console.log("小程序进入前台");this.refreshData();this.resumeUserAction();},refreshData: function() {// 刷新数据},resumeUserAction: function() {// 恢复用户操作}
});

后台运行(App Hide)

• 触发时机:小程序从前台切换到后台,或用户打开其他小程序。 • 主要事件:onHide。 • 功能与适用场景:
• 数据保存:保存当前页面的状态和数据。 • 资源释放:暂停或停止不必要的资源消耗,如视频播放或计时器。
• 后台任务:继续执行一些后台任务,如数据同步。 • 示例代码:

App({onHide: function() {console.log("小程序进入后台");this.saveCurrentData();this.releaseResources();},saveCurrentData: function() {// 保存当前数据},releaseResources: function() {// 释放资源}
});

错误处理(App Error)

• 触发时机:小程序发生脚本错误或 API 调用失败时。 • 主要事件:onError。 • 功能与适用场景:
• 错误日志记录:记录详细的错误信息,便于后续分析和调试。 • 错误上报:将错误信息上传到服务器进行监控。
• 用户提示:提示用户发生错误,提供解决建议或引导。 • 示例代码:

App({onError: function(msg) {console.error("小程序出错:", msg);this.logError(msg);this.reportError(msg);},logError: function(msg) {// 记录错误日志},reportError: function(msg) {// 上报错误信息}
});
  1. 页面生命周期

每个页面都有自己的生命周期函数,用于管理页面的加载、渲染、显示、隐藏等状态。

页面加载(onLoad)

• 触发时机:页面加载时触发,通常在用户进入页面时。 • 适用场景: • 数据初始化:加载页面所需的初始数据。
• 动态内容设置:根据页面参数,动态设置内容或状态。 • API调用:获取页面所需的详细信息,如商品详情。 • 示例代码:

Page({onLoad: function(options) {console.log("页面加载", options);this.loadData(options);},loadData: function(options) {// 加载数据}
});

页面显示(onShow)

触发时机:页面显示时触发,每次页面从后台切换到前台都会执行。 • 适用场景: • 数据刷新:检查和更新可能在后台变化的数据。
• UI更新:刷新界面,确保显示最新内容。 • 用户交互准备:重置与用户交互相关的状态或组件。 • 示例代码:

Page({onShow: function() {console.log("页面显示");this.refreshPageData();},refreshPageData: function() {// 刷新数据}
});

页面初次渲染完成(onReady)

触发时机:页面初次渲染完成时触发,仅在页面首次渲染完成时调用一次。 • 适用场景:
• 组件初始化:初始化需要页面完全加载后处理的组件,如图表、地图等。 • 动画效果:启动需要页面完全加载后的动画。 • 示例代码:

Page({onReady: function() {console.log("页面初次渲染完成");this.initChart();},initChart: function() {// 初始化图表}
});

页面隐藏(onHide)

• 触发时机:页面被隐藏时触发,比如进入下一个页面或切换到后台。 • 适用场景:
• 状态保存:保存当前页面的状态,以便返回时能够继续。 • 资源释放:暂停或停止不必要的资源消耗。 • 示例代码:

Page({onHide: function() {console.log("页面隐藏");this.savePageState();this.releasePageResources();},savePageState: function() {// 保存状态},releasePageResources: function() {// 释放资源}
});

页面卸载(onUnload)

• 触发时机:页面卸载时触发,比如从当前页面导航到另一个页面。 • 适用场景:
• 清理操作:在页面卸载时进行清理,如删除临时数据、停止监听等。 • 断开连接:关闭实时数据连接(如 WebSocket)。
• 示例代码:

Page({onUnload: function() {console.log("页面卸载");this.cleanup();this.disconnect();},cleanup: function() {// 清理操作},disconnect: function() {// 断开连接}
});
  1. 生命周期的实际应用场景
  1. 用户登录管理 • 初始化检查:在 onLaunch 中检查用户是否已登录。 • 登录状态刷新:在 onShow 中刷新用户的登录状态。 • 后台状态保存:在 onHide 中保存登录状态。
  2. 数据同步和更新 • 页面加载数据:在 onLoad 中通过 API 调用加载数据。 • 前台数据刷新:在 onShow 中更新关键数据。 • 后台任务继续:在 onHide 中保持数据同步任务。
  3. 性能优化 • 资源管理:在 onReady 中初始化需要完全加载的组件。 • 资源释放:在 onHide 和 onUnload 中释放不必要的资源。 • 错误处理和监控:在 onError 中记录和上报错误。
  4. 用户体验提升 • 个性化设置:在 onLoad 和 onShow 中动态更新内容。 • 动画效果:在 onReady 中启动页面动画。 • 操作恢复:在 onShow 中恢复用户未完成的操作。

总结

了解并合理利用小程序的生命周期,对于开发稳定、高效的应用至关重要。每个阶段都有特定的功能和适用场景,开发者应根据具体需求,灵活处理生命周期事件,以提升应用的用户体验和性能。

相关文章:

小程序的生命周期使用方法和应用场景

小程序生命周期 初始化(App Launch) • 触发时机:小程序首次启动时。 • 主要事件:onLaunch。 • 功能与适用场景: • 全局数据初始化:设置应用的全局状态和变量。 • 登录状态检查:判断用户是…...

什么是C++模块化系统?C++20的模块化系统。

C20引入的模块化系统是一种新的代码组织和编译机制,它旨在替代传统的头文件机制,提供更好的代码组织、更快的编译速度和更强的封装性。模块化系统的主要目标包括: 减少编译时间:通过减少冗余的头文件解析和宏定义传播&#xff0c…...

智慧校园-档案管理系统总体概述

智慧校园档案管理系统,作为教育信息化进程中的重要一环,它运用现代信息技术的力量,彻底改变了传统档案管理的面貌,为学校档案资源的收集、整理、存储、检索与利用开辟了全新的途径。这一系统全面覆盖学生、教职工、教学科研及行政…...

文心一言 VS 讯飞星火 VS chatgpt (290)-- 算法导论21.3 3题

三、给出一个包含 m 个 MAKE-SET 、UNION 和 FINDSET 操作的序列(其中有 n 个是 MAKE-SET 操作),当仅使用按秩合并时,需要 Ω(mlgn) 的时间。如果要写代码,请用go语言。 文心一言: 在并查集(Union-Find)数…...

逻辑回归梯度推导

逻辑回归是一种广泛使用的分类算法,用于估计一个事件发生的概率。它是线性回归的扩展,通过sigmoid函数将线性回归的输出映射到[0, 1]区间,从而用于分类任务。 在逻辑回归中,我们使用对数似然损失函数(log-likelihood l…...

Python 使用函数输出一个整数的逆序数

在Python中,你可以定义一个函数来输出一个整数的逆序数。这里有一个简单的实现方法: def reverse_integer(x):# 检查输入是否为整数if not isinstance(x, int):raise ValueError("Input must be an integer")# 将整数转换为字符串&#xff0c…...

【Linux】Wmware Esxi磁盘扩容

目录 一、概述 1.1 磁盘分区概念 1.2 LVM概念 二、扩容步骤 二、报错 一、概述 1.1 磁盘分区概念 在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。Linux把各种 IDE 设备分配了一个由 hd 前缀组成的文…...

树莓派4B_OpenCv学习笔记15:OpenCv定位物体实时坐标

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1: 今日学习 OpenCv定位物体实时位置,代码来源是…...

MySQL之如何定位慢查询

1、如何定位慢查询 1.1、使用开源工具 调试工具:Arthas 运维工具:Promethuss、Skywalking 1.2、MySQL自带慢日志 慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒&#x…...

Open3D 删除点云中重复的点

目录 一、算法原理1、重叠点2、主要函数二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、重叠点 原始点云克隆一份   构造重叠区域   合并点云获得重叠点 2、主要…...

填报志愿选专业是兴趣重要还是前景重要?

进行专业评估,找到一个适合自己的专业是一件非常困难的事情。在进行专业选择时,身上理想化色彩非常严重的人,会全然不顾及他人的劝阻,义无反顾的以兴趣为主,选择自己热爱的专业。一些较多考虑他人建议,能听…...

python开发基础——day9 函数基础与函数参数

一、初识函数(function) 编程函数!数学函数,里面的是逻辑,功能,而不是套公式 编程函数的作用实现特定操作的一段代码 你现在请客,每个人都点同样的一份吃的,请100个人 1.薯条 2.上校鸡块 3.可乐 那…...

STM32——使用TIM输出比较产生PWM波形控制舵机转角

一、输出比较简介: 只有高级定时器和通用寄存器才有输入捕获/输出比较电路,他们有四个CCR(捕获/比较寄存器),共用一个CNT(计数器),而输出比较功能是用来输出PWM波形的。 红圈部分…...

第十五章 集合(set)(Python)

文章目录 前言一、集合 前言 集合(set)是一个无序的不重复元素序列。 一、集合 set {1, 2, 3, 4}...

面试-javaIO机制

1.BIO BIO:是传统的javaIO以及部分java.net下部分接口和类。例如,socket,http等,因为网络通信同样是IO行为。传统IO基于字节流和字符流进行操作。提供了我们最熟悉的IO功能,譬如基于字节流的InputStream 和OutputStream.基于字符流…...

在.NET Core中,config和ConfigureServices的区别和作用

在.NET Core中,config和ConfigureServices是两个不同的概念,它们在应用程序的启动和配置过程中扮演着不同的角色。 ConfigureServices:这是ASP.NET Core应用程序中的一个方法,位于Startup类的内部。它的作用是配置依赖注入(DI)容器…...

App Inventor 2 如何实现多个定时功能?

1、可以使用多个“计时器”组件。 2、也可以用一个计时器,定时一分钟。也就是一分钟就会触发一次事件执行,定义一个全局数字变量,在事件中递增,用逻辑判断这个变量的值即可完成多个想要定时的任务(о∀о) 代码块请参考&#xf…...

技术驱动的音乐变革:AI带来的产业重塑

📑引言 近一个月来,随着几款音乐大模型的轮番上线,AI在音乐产业的角色迅速扩大。这些模型不仅将音乐创作的门槛降至前所未有的低点,还引发了一场关于AI是否会彻底颠覆音乐行业的激烈讨论。从初期的兴奋到现在的理性审视&#xff0…...

重生之我要学后端0--HTTP协议和RESTful APIs

http和RESTful APIs HTTP协议RESTful APIs设计RESTful API设计实例 HTTP协议 HTTP(超文本传输协议)是用于分布式、协作式和超媒体信息系统的应用层协议。它是网页数据通讯的基础。工作原理简述如下: 客户端请求(Request&#xf…...

深度之眼(二十八)——神经网络基础知识(三)-卷积神经网络

文章目录 一、前言二、卷积操作2.1 填充(padding)2.2 步长2.3 输出特征图尺寸计算2.4 多通道卷积 三、池化操作四、Lenet-5及CNN结构进化史4.1 Lenet-5 一、前言 卷积神经网络–AlexNet(最牛)-2012 Lenet-5-大规模商用(1989) 二、…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: ​onCreate()​​ ​调用时机​:Activity 首次创建时调用。​…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

uniapp 字符包含的相关方法

在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...