收藏
回答

为什么又onLaunch,却没有onExit?

很多时候我们很需要onExit,做一些善后的工作?腾讯为什么不开放出来?


onshow和onhide,onload和onunload倒是成对的,onLaunch倒没有成对的了。

回答关注问题邀请回答
收藏

1 个回答

  • Maverick
    Maverick
    2019-05-10

    小程序又不能主动退出,只有在进入后台一段时间后,或内存不足时被微信销毁。难道还要等你onExit执行完吗。

    善后工作可以在进入后台 onHide(APP)时做

    2019-05-10
    有用
    回复 9
    • 老周
      老周
      2019-05-10

      比如一些全局的数据我要存本地或存数据库,它们不是某个页面的数据,而是全局的。

      一个小程序运行的这个周期可能会有多次onshow onhide,我不能每次onhide都去写数据库,这太浪费资源了。如果有onexit,那我写一次就OK了,这些数据也只需要写一次。

      2019-05-10
      回复
    • Maverick
      Maverick
      2019-05-10回复老周

      小程序的onHide(不是页面的onHide)并不会很频繁触发吧?就算给你个主动退出的功能和onExit时机,也是不可靠的,因为小程序被销毁时你根本没机会发请求。onHide更可靠些。

      2019-05-10
      回复
    • 老周
      老周
      2019-05-10回复Maverick

       onHide(APP)其实只是有某个页面的onhide触发了,顺带触发下它。每次有页面的onhide,ta都会运行。

      我之所以提这个要求,是因为我没有自己的服务器,用的是腾讯的免费云数据库,但是ta有流量和次数限制,所以要省着用。

      当然有规避的办法,但是会麻烦点,如果有这个事件函数,就会简单些。



      如果有onexit函数,那当然是等我整个onexit函数执行完后,才真正销毁小程序。这个道理跟销毁页面是一样的道理。不能说页面很快被销毁了,页面的onhide函数就来不及执行了。

      2019-05-10
      回复
    • Maverick
      Maverick
      2019-05-10回复老周

      APP的onHide和页面的onHide不一样的,你从A页面切换到B页面,A页面会触发onHide,但APP不会;你小程序切到后台,当前页和APP都会触发onHide。


      主动退出当然可以等你onExit执行完啊,我说的是小程序“被”销毁,内存不足时就不可能等你了吧?

      2019-05-10
      回复
    • 老周
      老周
      2019-05-10回复Maverick

      一般会等的。

      一般的内存管理系统当然都有余量,不会真等到100%耗尽的时候再通知微信来杀小程序。

      2019-05-10
      回复
    查看更多(4)
登录 后发表内容