微信小程序 生命周期详解


Posted in Javascript onOctober 12, 2016

微信小程序 生命周期

通俗的讲,生命周期就是指一个对象的生老病死。 从软件的角度来看,生命周期指程序从创建、到开始、暂停、唤起、停止、卸载的过程。

下面从一下三个方面介绍微信小程序的生命周期:

  1. 应用生命周期
  2. 页面生命周期
  3. 应用生命周期影响页面生命周期

》》》应用生命周期

微信小程序 生命周期详解

  1. 用户首次打开小程序,触发 onLaunch(全局只触发一次)。
  2. 小程序初始化完成后,触发onShow方法,监听小程序显示。
  3. 小程序从前台进入后台,触发 onHide方法。
  4. 小程序从后台进入前台显示,触发 onShow方法。
  5. 小程序后台运行一定时间,或系统资源占用过高,会被销毁。

前台、后台定义: 当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台。

在整理本文资料的时候,有点不解,为什么不把小程序监听『销毁』方法开放给开发者,我猜测是因为IOS系统限制『按下Home键时,app从活动状态转入后台,会被挂起』;微信也不例外,只要运行一段时间或把微信客户端进程杀掉,就无法通知小程序应用被销毁。

》》》页面生命周期

微信小程序 生命周期详解

  1. 小程序注册完成后,加载页面,触发onLoad方法。
  2. 页面载入后触发onShow方法,显示页面。
  3. 首次显示页面,会触发onReady方法,渲染页面元素和样式,一个页面只会调用一次。
  4. 当小程序后台运行或跳转到其他页面时,触发onHide方法。
  5. 当小程序有后台进入到前台运行或重新进入页面时,触发onShow方法。
  6. 当使用重定向方法wx.redirectTo(OBJECT)或关闭当前页返回上一页wx.navigateBack(),触发onUnload

》》》应用生命周期影响页面生命周期

微信小程序 生命周期详解

  1. 小程序初始化完成后,页面首次加载触发onLoad,只会触发一次。
  2. 当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。
  3. 当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法。

下图是小程序从注册到页面加入,前后台切换流程。

微信小程序 生命周期详解

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JavaScript传递变量: 值传递?引用传递?
Feb 22 Javascript
js call方法详细介绍(js 的继承)
Nov 18 Javascript
JavaScript插件化开发教程 (三)
Jan 27 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
Oct 12 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
Apr 18 Javascript
浅析上传头像示例及其注意事项
Dec 14 Javascript
Bootstarp 基础教程之表单部分实例代码
Feb 03 Javascript
Javascript面试经典套路reduce函数查重
Mar 23 Javascript
微信小程序实现多个按钮toggle功能的实例
Jun 13 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
Jun 14 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
监听element-ui table滚动事件的方法
Mar 26 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
Oct 12 #Javascript
Angularjs手动解析表达式($parse)
Oct 12 #Javascript
js利用clipboardData实现截屏粘贴功能
Oct 12 #Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
Oct 12 #Javascript
jQuery给指定的table动态添加删除行的操作方法
Oct 12 #Javascript
详解Javascript中的原型OOP
Oct 12 #Javascript
浅析BootStrap Treeview的简单使用
Oct 12 #Javascript
You might like
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
详解PHP数组赋值方法
2015/11/07 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
js里的prototype使用示例
2010/11/19 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
bootstrap table小案例
2016/10/21 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
nodejs中函数的调用实例详解
2018/10/31 NodeJs
优雅地使用loading(推荐)
2019/04/20 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
python基础教程之lambda表达式使用方法
2014/02/12 Python
关于Python的一些学习总结
2018/05/25 Python
详解Python发送email的三种方式
2018/10/18 Python
python实现矩阵打印
2019/03/02 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
python 线程的五个状态
2020/09/22 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
九年级化学教学反思
2014/01/28 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
《日月潭》教学反思
2014/02/28 职场文书
经典导游欢迎词
2015/01/26 职场文书
社会实践活动报告
2015/02/05 职场文书
python 命令行传参方法总结
2021/05/25 Python
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
关于Vue中的options选项
2022/03/22 Vue.js