太坑: 微信小程序生命週期(onLoad,onHide,onShow,onReady,onUnload)的坑

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被殺死,那小程序自然被殺死



作者:李世達
鏈接:https://www.jianshu.com/p/49c153fca075
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章