收藏
回答

小程序生命周期(非页面)在热启动和冷启动时的执行机制是怎样的?

想了解小程序生命周期(非页面)在热启动和冷启动时的执行机制是怎样的,以及在执行过程中获取的用户场景值是否有变化?


想实现的场景:如果是冷启动时,就从onlaunch中采集场景值,然后再页面onshow时上报;如果是热启动,就保持本次冷启动中onlaunch获取的场景值,然后再页面onshow时上报。在下一次冷启动时再采集新的场景值。请求各位大神可以实现吗?

最后一次编辑于  2020-03-13
回答关注问题邀请回答
收藏

2 个回答

  • z_oct.2
    z_oct.2
    2020-03-18

    总结你的实现:获取此次小程序启动的场景值并提交。

    首先明确在哪里可以取到场景值,有两个地方:1、onlaunch,2、onshow。两个地方都是在app.js,也就是小程序冷启动时,热启动时是不会重新编译app.js的,就连切回来后的页面(page)也不会重新编辑,只是从后台切到前台展示,这时仅onshow会触发。两个小程序的生命周期函数执行顺序onlaunch->onshow,在哪取场景值都可以,个人建议从onshow中。

    取到场景值后,存到全局里或者缓存都可以,全局可以访问,想在哪里提交就看你的了。

    想详细的了解小程序的两种启动方式:https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/operating-mechanism.html

    2020-03-18
    有用 1
    回复 5
    • Lara
      Lara
      2020-03-30
      假如我扫描小程序码进入小程序,然后点击胶囊按钮退出,然后从下拉最近使用列表进入小程序,这种情况是属于热启动还是只是后台切前台,app.js会重新编译吗?
      2020-03-30
      回复
    • z_oct.2
      z_oct.2
      2020-03-30回复Lara
      经过测试,点击胶囊按钮退出,再次进入属于热启动(即后台切到前台)。
      2020-03-30
      1
      回复
    • Lara
      Lara
      2020-03-30回复z_oct.2
      也就是说这种情况下只是onLaunch不执行,但onshow可以执行,可以在onshow中重新获取场景值对吗?
      2020-03-30
      回复
    • z_oct.2
      z_oct.2
      2020-03-31回复Lara
      是的,可以在app.js里的onshow拿到场景值。
      你可以在开发工具顶栏的'切后台'按钮测试这个后台切到前台。
      2020-03-31
      回复
    • Lara
      Lara
      2020-03-31
      感谢,还有一个问题,就是我使用胶囊按钮退出后,此时小程序并没有彻底销毁,只是转到后台,这种情况下,多久会自动销毁,并重新执行onlaunch
      2020-03-31
      回复
  • Naruto
    Naruto
    2020-03-31

    可以实现

    2020-03-31
    有用
    回复 2
    • Lara
      Lara
      2020-04-02
      感谢回答,另外当我使用胶囊按钮退出后,此时小程序并没有彻底销毁,只是转到后台,这种情况下,多久会自动销毁,并重新执行onlaunch
      2020-04-02
      回复
    • 酷酷的王😏
      酷酷的王😏
      2021-09-28回复Lara
      当小程序进入后台并被「挂起」后,如果很长时间(目前是 30 分钟)都未再次进入前台,小程序会被销毁。
      2021-09-28
      回复
登录 后发表内容
问题标签