在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
https://www.jianshu.com/p/49c153fca075 在写一个业务逻辑的时候遇到一个问题。。小程序wxml的数据在你返回微信主页的时候是不算退出的,只能算onhide,并且小程序没有给退出小程序的监听方法,之前看文章说用信号量来监测,确实可以实现一部分,但是如果小程序有tabbar的话,,这个方法也不好使。所以我遇到的问题就是,第一次扫码进入一个小程序,刷新出来数据以后,返回微信主界面,再点开这个小程序,首页的数据在不重新请求的情况下,之前绑定的数据就没有了;但是如果你手动刷新出来数据,仍然返回微信主页面,然后再打开这个小程序,在不刷新数据的情况下,上次的数据会保留下来,这就让我很烦恼。。没有数据的小程序。。估计会让人秒删。。然后我从wxml的生命周期找答案 图1 我发现。。在没有杀死微信这个app的情况下。。 第一次打开小程序,以上前3个方法各执行1次,当第一次回到微信主页面的时候onHide,onUnload各执行1次; 第二次打开小程序,以上前3个方法各执行1次,当第二次回到微信主页面的时候onHide执行1次,onUnload不执行; 第三次打开小程序,onLoad,onReady不执行,onShow执行一次;当第三次回到微信主页面的时候onHide执行1次,onUnload不执行; 第四次打开小程序,同第三次 第五次。。。。。同第三次。。。 。。。 也就是说,当小程序执行了onUnload的时候,wxml绑定的数据就会消失,然后再进入小程序才会走onLoad方法 心细的话你会发现第一次退出和第二次退出有什么区别:
图2 第一次打开小程序并退出的话,是下面这个(朋友圈)页面
图3 第2次打开小程序并退出的话,是下面这个(小程序)页面
图4 不要小看这个细节、当是图3的时候,小程序打开是要走onLoad方法的,因为上次关闭的时候走了onUnload方法、当是图4情况的话,就不会走onLoad方法,它的上一次退出也没走onUnload方法、小程序的生命周期发生了挺大变化,当然这个细节大部分业务逻辑不用关心,但是真的用到的时候,不清楚这个知识点可能会多写很多代码,我相信某个时间点你会感激我的,哈哈 tips:所有情况都是针对微信app没有被杀死的情况下讨论的,如果微信这个app被杀死,那小程序自然被杀死
|
请发表评论