极乐问答No.1 | 如何理解微信小程序的生命周期?

导语

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

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

应用生命周期

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

前台、后台定义: 当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台。需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。

页面生命周期

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

wx.navigateTo跳转状态下,页面A和页面B的生命周期逻辑

1、进入A页面:A执行onLoad()-->onShow()-->onReady(); 2、A页面navigateTo B页面:A执行onHide(),B执行onLoad()-->onShow()-->onReady(); 3、B页面返回A页面:B执行onUnload(),A执行onShow(); 4、退出A页面:A执行onUnload()。

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

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

问答

Q

在一个生命周期中处理其他生命周期中的函数,我在一个页面的onReady 生命周期中循环调用了一个方法代码如下:

这个函数写在onReady生命周期里,但是当我离开这个页面时,这个函数还是在一直不停的执行。导致下一次继续进入这个页面的时候。会有多个loop函数在执行。我的想法是在onUnload生命周期里去取消这个函数的执行。但是怎么隔着生命周期操作其他生命周期里的函数呢?

极乐叔:你的问题是你把定时器放到了包作用域中了 小程序生命周期还有一个函数OnHide 清除定时器,OnShow的时间再打开。

原文发布于微信公众号 - 极乐技术社区(wxapp-union)

原文发表时间:2017-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

go语言读取csv文件并输出的方法

本文实例讲述了go语言读取csv文件并输出的方法。分享给大家供大家参考。具体实现方法如下: package main import ( "encodi...

3788
来自专栏微信小程序开发

小程序不同页面之间的传值方式

今天来说一下小程序不同页面之间传值的几种方式: 1、URL传值 这种方式最常用,比如: wx.navigateTo({ url: '../detail/d...

68610
来自专栏Python自动化测试

页面对象的定位

在自动化的测试中,对象元素的定位和操作是自动化的核心部分,但是对象是定位是自动化的基础,在对象的基础上,才可以形成对对象的操作。

893
来自专栏静默虚空的博客

Intellij IDEA 使用小结

快捷键 核心快捷键 IntelliJ IDEA 作为一个以快捷键为中心的 IDE,为大多数操作建议了键盘快捷键。在这个主题中,您可以找到最不可缺少的列表,使 I...

3136
来自专栏Angular&服务

cordova扫描二维码

1653
来自专栏自由而无用的灵魂的碎碎念

去掉windows8.1鸡肋的开始按钮

可以使用我分享的链接下载startisgone: http://download.csdn.net/detail/wangallan/8972885

962
来自专栏新工科课程建设探讨——以能源与动力工程专业为例

2.2.5 HTML5程序调试

假设有一个网页,由debug.html何debug.js构成,其中debug.html内容如下:

1380
来自专栏十月梦想

Vue动态组件绑定和v-once

        向上述就是那个符合条件显示在dom中,不符合的则直接在dom中销毁,这样是比较性能地下,如何正确的使用呢?可以加载一个v-once属性

2051
来自专栏杨龙飞前端

bootstrap file input 官方文档翻译

4817
来自专栏Play & Scala 技术分享

[Play-Scala-2.2.1] 接收jQuery Post的原始字符串请求

3208

扫码关注云+社区

领取腾讯云代金券