当前位置:网站首页>【微信小程序】運行機制和更新機制
【微信小程序】運行機制和更新機制
2022-07-06 20:33:00 【前端小劉不怕牛牛】
觀眾老爺們好呀,牛牛又更文了,上文我們對部分比較常用的組件進行了講解,作為開發者,我們還需要對小程序的運行機制和更新機制做一定的了解,那問題來了,你對它們了解多少呢?
今天牛牛就帶大家測一測,不了解的還不筆記做起來!
一,運行機制
第一個說明的是小程序的運行機制,小程序從啟動到最終被銷毀,其實會有很多不同的步驟,小程序會經曆多種狀態,大致的運行機制如下圖所示。
接下來我們開始詳細的步驟講解
1.1 小程序的啟動
看上圖,我們知道,小程序首先會有一個冷啟動
,簡單講解就是用戶首次打開小程序,或者小程序經過一定時間自動銷毀後被用戶再次打開,這個時候,小程序需要重新加載代碼,重新加載啟動。
這時候可能有小夥伴會問啦,那如果還沒銷毀就再次啟動小程序呢?這個時候就叫做熱啟動
啦,平時使用小程序的時候,我們會發現,關閉小程序後不久重新打開,加載的速度比前者快上不少,這就是因為小程序未被銷毀,是從後臺狀態進入前臺狀態,這個過程我們叫做熱啟動,也可以說切前臺。
1.2 小程序前後臺
小程序完成加載之後,會有兩種狀態,分別是前臺狀態和後臺狀態。
- 小程序啟動後,在界面展示出來的時候,該小程序就處於
前臺狀態
- 而當我們關閉小程序時,在一定時間內,小程序並沒有真正關閉也就是銷毀,而是進入所說的
後臺狀態
,後臺狀態下小程序依然在運行,只是部分API
的使用會受到限制。這裏的操作就是前圖中的切後臺。 - 正常情况下,後臺狀態的時間不會持續很長時間,一小段時間後就會開啟掛起事件,進入掛起狀態(後文解釋)。
- 在銷毀前,用戶再次點擊小程序打開,小程序就會從
後臺狀態
或掛起狀態
重新進入前臺狀態
,這也就是我們前邊說到的熱啟動
1.3 掛起狀態
小程序在後臺狀態
呆很短的時間後,就會切換到掛起狀態
,在該狀態下,微信會停止該小程序JS線程的執行,小程序的內容狀態會被暫時保留,事件、回調等等在小程序重新進入前臺狀態時
才會觸發。
小tip:
- 後臺並不會停止JS線程的執行,如果小程序開啟了後臺音樂播放、地理比特置等功能時,小程序不會從後臺切入掛起,也就是小程序可以持續運行
1.4 小程序銷毀事件
最後一個就是當掛起狀態持續過久(目前是三十分鐘),為了减輕資源緊張,這時候,小程序就會被銷毀啦。
還有一種情况,當小程序占用系統資源過多,也會被系統銷毀或者被微信客戶端主動回收。
在開發中,我們可以用wx.onMemoryWarning
監聽內存告警事件,設置內存清理。
二,更新機制
我們知道,微信客戶端會在本地緩存中緩存小程序的代碼,而開發者在管理後臺中會不定時發布更新的新版本小程序,那麼微信客戶端是怎麼知道是否有新版本的呢?
其實微信客戶端會有若幹個時機取檢查本地緩存,如果有新版本,那就進行小程序代碼包的更新,但如果恰巧發布新版本後沒有經過這些時機就打開小程序,那打開可能還會是舊版本的小程序。
下面牛牛來列舉這些檢查更新的時機
2.1 啟動時同步更新
同步更新會影響到小程序的啟動耗時,啟動時並不一定會發生同步更新,以下兩種情况,會在啟動小程序時同步更新。
定期檢查發現新版本
微信在運行的時候,會定期檢查最近使用小程序是否具有新版本,並在下一次啟動小程序時設置是否同步更新用戶長時間未使用
長時間未使用小程序,微信客戶端為了小程序版本迭代正常,會對這些小程序設置啟動時同步更新。
2.2 啟動時异步更新
每次小程序冷啟動時,都會有异步檢查是否有新版本的操作,如果發現新版本,會將新版本代碼進行异步下載,而不影響小程序的運行,不過這也會導致,如果啟動後仍然是舊版本,只有下次啟動,才會打開新版本的小程序。
2.3 開發者手動觸發
微信提供了一個APIwx.getUpdateManager
,可以在有新版本時提示用戶重啟小程序更新新版本
三,生命周期
最後就讓我們以生命周期作為今天的結尾吧。
生命周期可以分為程序和頁面兩部分,對於程序,我們首次啟動小程序時,會觸發
onLaunch
方法,當我們的小程序初始化完成後,便會觸發onShow
方法,頁面加載並顯示,此時觸發顯示頁面的onLoad
和onShow
方法,成功顯示頁面。首次顯示頁面,還會觸發頁面的
onReady
方法,對頁面元素進行渲染,注意,該方法,一個頁面只會調用一次。當小程序切入後臺時,注意,小程序會先觸發頁面的
onHide
方法,將頁面隱藏,再觸發程序的onHide
方法而當小程序從後臺切入前臺時,小程序會先觸發程序的
onShow
方法,再觸發頁面的onShow
方法,將頁面顯示。
這裏放上一張網上的圖片便於大家理解
本文到這裏就結束啦,如果覺得對您有幫助的話,可以關注一下牛牛後續的更新,感謝您的支持!
債見~
边栏推荐
- Detailed explanation of knowledge map construction process steps
- 持续测试(CT)实战经验分享
- Tencent cloud database public cloud market ranks top 2!
- Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
- Quel genre de programmation les enfants apprennent - ils?
- Enumeration gets values based on parameters
- 【每周一坑】信息加密 +【解答】正整数分解质因数
- Deep learning classification network -- zfnet
- [cloud native and 5g] micro services support 5g core network
- JVM_ Common [interview questions]
猜你喜欢
知识图谱之实体对齐二
Case ① | host security construction: best practice of 3 levels and 11 capabilities
【每周一坑】计算100以内质数之和 +【解答】输出三角形
An East SMS login resurrection installation and deployment tutorial
[DIY]自己设计微软MakeCode街机,官方开源软硬件
B-jiege's tree (pressed tree DP)
Tencent T4 architect, Android interview Foundation
What programming do children learn?
Comment faire une radio personnalisée
APS taps home appliance industry into new growth points
随机推荐
Tencent T4 architect, Android interview Foundation
Rhcsa Road
使用ssh连接被拒
【GET-4】
01 basic introduction - concept nouns
知识图谱之实体对齐二
永磁同步电机转子位置估算专题 —— 基波模型类位置估算概要
JS get browser system language
B-jiege's tree (pressed tree DP)
Rhcsa Road
Unity making plug-ins
【每周一坑】信息加密 +【解答】正整数分解质因数
Anaconda安装后Jupyter launch 没反应&网页打开运行没执行
OLED屏幕的使用
Design your security architecture OKR
电子游戏的核心原理
B-杰哥的树(状压树形dp)
Number of schemes from the upper left corner to the lower right corner of the chessboard (2)
Core principles of video games
(work record) March 11, 2020 to March 15, 2021