欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:java 小程序——生命周期

柚子快報(bào)激活碼778899分享:java 小程序——生命周期

http://yzkb.51969.com/

文章目錄

運(yùn)行機(jī)制更新機(jī)制生命周期介紹應(yīng)用級(jí)別生命周期頁面級(jí)別生命周期組件生命周期生命周期兩個(gè)細(xì)節(jié)補(bǔ)充說明總結(jié)

運(yùn)行機(jī)制

用一張圖簡要概述一下小程序的運(yùn)行機(jī)制 冷啟動(dòng)與熱啟動(dòng):

小程序啟動(dòng)可以分為兩種情況,一種是冷啟動(dòng),一種是熱啟動(dòng)

冷啟動(dòng):如果用戶首次打開,或小程序銷毀后被用戶再次打開,此時(shí)小程序需要重新加載啟動(dòng)

熱啟動(dòng):如果用戶已經(jīng)打開過某小程序,然后在一定時(shí)間內(nèi)再次打開該小程序,此時(shí)小程序并未被銷毀,只是從后臺(tái)狀態(tài)進(jìn)入前臺(tái)狀態(tài)

前臺(tái) 以及 后臺(tái)狀態(tài):

小程序啟動(dòng)后,界面被展示給用戶,此時(shí)小程序處于「前臺(tái)」?fàn)顟B(tài)。

當(dāng)用戶「關(guān)閉」小程序時(shí),小程序并沒有真正被關(guān)閉,而是進(jìn)入了「后臺(tái)」?fàn)顟B(tài),當(dāng)用戶再次進(jìn)入微信并打開小程序,小程序又會(huì)重新進(jìn)入「前臺(tái)」?fàn)顟B(tài)

切后臺(tái)的方式包括但不限于以下幾種:

點(diǎn)擊右上角膠囊按鈕離開小程序點(diǎn)擊返回鍵離開小程序屏幕左側(cè)右滑離開小程序

掛起:

小程序進(jìn)入「后臺(tái)」?fàn)顟B(tài)一段時(shí)間后(5 秒),微信停止小程序 JS 線程執(zhí)行,小程序進(jìn)入「掛起」?fàn)顟B(tài),當(dāng)開發(fā)者使用了后臺(tái)播放音樂、后臺(tái)地理位置等能力時(shí),小程序可以在后臺(tái)持續(xù)運(yùn)行,不會(huì)進(jìn)入到掛起狀態(tài)

銷毀:

如果用戶很久沒有使用小程序,或者系統(tǒng)資源緊張,小程序會(huì)被銷毀,即完全終止運(yùn)行。

當(dāng)小程序進(jìn)入后臺(tái)并被「掛起」后,如果很長時(shí)間(目前是 30 分鐘)都未再次進(jìn)入前臺(tái),小程序會(huì)被銷毀

當(dāng)小程序占用系統(tǒng)資源過高,可能會(huì)被系統(tǒng)銷毀或被微信客戶端主動(dòng)回收。

更新機(jī)制

在訪問小程序時(shí),微信會(huì)將小程序代碼包緩存到本地。

開發(fā)者在發(fā)布了新的小程序版本以后,微信客戶端會(huì)檢查本地緩存的小程序有沒有新版本,并進(jìn)行小程序代碼包的更新。

小程序的更新機(jī)制有兩種:啟動(dòng)時(shí)同步更新 和 啟動(dòng)時(shí)異步更新

啟動(dòng)時(shí)異步更新

啟動(dòng)時(shí)同步更新:微信運(yùn)行時(shí),會(huì)定期檢查最近使用的小程序是否有更新。如果有更新,下次小程序啟動(dòng)時(shí)會(huì)同步進(jìn)行更新,更新到最新版本后再打開小程序。如果 用戶長時(shí)間未使用小程序時(shí),會(huì)強(qiáng)制同步檢查版本更新

啟動(dòng)時(shí)異步更新

啟動(dòng)時(shí)異步更新:在啟動(dòng)前沒有發(fā)現(xiàn)更新,小程序每次 冷啟動(dòng) 時(shí),都會(huì)異步檢查是否有更新版本。如果發(fā)現(xiàn)有新版本,將會(huì)異步下載新版本的代碼包,將新版本的小程序在下一次冷啟動(dòng)進(jìn)行使用,當(dāng)前訪問使用的依然是本地的舊版本代碼

在啟動(dòng)時(shí)異步更新的情況下,如果開發(fā)者希望立刻進(jìn)行版本更新,可以使用 wx.getUpdateManager API 進(jìn)行處理。在有新版本時(shí)提示用戶重啟小程序更新新版本。

App({

/**

* 當(dāng)小程序初始化完成時(shí),會(huì)觸發(fā) onLaunch(全局只觸發(fā)一次)

*/

onLaunch: function () {

const updateManager = wx.getUpdateManager()

updateManager.onCheckForUpdate(function (res) {

// 請(qǐng)求完新版本信息的回調(diào)

console.log(res.hasUpdate)

})

updateManager.onUpdateReady(function () {

wx.showModal({

title: '更新提示',

content: '新版本已經(jīng)準(zhǔn)備好,是否重啟應(yīng)用?',

success(res) {

if (res.confirm) {

// 新的版本已經(jīng)下載好,調(diào)用 applyUpdate 應(yīng)用新版本并重啟

updateManager.applyUpdate()

}

}

})

})

updateManager.onUpdateFailed(function () {

// 新版本下載失敗

})

}

})

代碼:

// app.js

App({

// onLaunch 是小程序的鉤子函數(shù),這個(gè)鉤子函數(shù)在冷啟動(dòng)時(shí)肯定會(huì)執(zhí)行到

// 當(dāng)小程序冷啟動(dòng)時(shí),會(huì)自動(dòng)微信后臺(tái)請(qǐng)求新版本的信息,如果有新版本,會(huì)立即進(jìn)行下載

onLaunch () {

// 使用 wx.getUpdateManager 方法監(jiān)聽下載的狀態(tài)

const updateManager = wx.getUpdateManager()

// 當(dāng)下載完成新版本以后,會(huì)觸發(fā) onUpdateReady 回調(diào)函數(shù)

updateManager.onUpdateReady(function () {

// 在回調(diào)函數(shù)中給用戶提示,

wx.showModal({

title: '更新提示',

content: '新版本已經(jīng)準(zhǔn)備好,是否重啟應(yīng)用?',

success(res) {

if (res.confirm) {

// 強(qiáng)制當(dāng)前小程序使用新版本并且會(huì)重啟當(dāng)前小程序

updateManager.applyUpdate()

}

}

})

})

}

})

生命周期介紹

關(guān)于生命周期,官方的流程圖是這樣的 看起來復(fù)雜難懂,下面讓我們慢慢了解

應(yīng)用生命周期是指應(yīng)用程序進(jìn)程從創(chuàng)建到消亡的整個(gè)過程

小程序的生命周期指的是 小程序從啟動(dòng)到銷毀的整個(gè)過程

在打開一個(gè)小程序應(yīng)用的時(shí)候都需要經(jīng)歷一系列的初始化步驟,比如頁面是否加載完成、頁面是否初次渲染完成等等。

在此過程中,小程序也會(huì)運(yùn)行被稱為生命周期鉤子的函數(shù),這些函數(shù)由小程序框架本身提供,被稱為生命周期函數(shù),生命周期函數(shù)會(huì)按照順序依次自動(dòng)觸發(fā)調(diào)用。幫助程序員在特定的時(shí)機(jī)執(zhí)行特定的操作,輔助程序員完成一些比較復(fù)雜的邏輯。讓開發(fā)者有機(jī)會(huì)在特定階段運(yùn)行自己的代碼。

小程序的生命周期分類三類:應(yīng)用級(jí)別、頁面級(jí)別和組件級(jí)別 3 種類型

應(yīng)用級(jí)別生命周期

知識(shí)點(diǎn):

應(yīng)用生命周期通常是指一個(gè)小程序從 啟動(dòng) → 運(yùn)行 → 銷毀的整個(gè)過程

應(yīng)用生命周期伴隨著一些函數(shù),我們稱為 應(yīng)用生命周期函數(shù),應(yīng)用生命周期函數(shù)需要 在 app.js 文件的 App() 方法中定義

當(dāng)整個(gè)小程序應(yīng)用運(yùn)行到某個(gè)時(shí)機(jī)的時(shí)候,我們需要做一些事情。例如:當(dāng)小程序啟動(dòng)成功之后,我們要獲取小程序的一些信息,就可以在小程序啟動(dòng)成功時(shí)的鉤子函數(shù)中寫代碼獲取我們想要的信息。

生命周期必填說明onLaunch否監(jiān)聽小程序初始化,全局只會(huì)執(zhí)行 1 次onShow否監(jiān)聽小程序啟動(dòng)或切前臺(tái)onHide否監(jiān)聽小程序切后臺(tái)

? 注意事項(xiàng):

從小程序生命周期的角度來看,我們一般講的「啟動(dòng)」專指冷啟動(dòng),熱啟動(dòng)一般被稱為后臺(tái)切前臺(tái)。 App() 必須在 app.js 中調(diào)用,必須調(diào)用且只能調(diào)用一次。不然會(huì)出現(xiàn)無法預(yù)期的后果。

小程序啟動(dòng)后,后臺(tái)會(huì)首先完成小程序的初始化,該過程只會(huì)觸發(fā)一次;之后會(huì)完成顯示的工作,用戶可以操作小程序從前臺(tái)進(jìn)入后臺(tái)以及從后臺(tái)回復(fù)到前臺(tái)顯示;小程序在后臺(tái)運(yùn)行一段時(shí)間,當(dāng)系統(tǒng)資源不足時(shí)會(huì)被注銷。

代碼:

?? app.js

App({

/**

* 當(dāng)小程序初始化完成時(shí),會(huì)觸發(fā) onLaunch(全局只觸發(fā)一次)

*/

onLaunch: function () {

// 監(jiān)聽小程序初始化

console.log('onLaunch: 當(dāng)小程序初始化完成時(shí),會(huì)觸發(fā) onLaunch')

},

/**

* 當(dāng)小程序啟動(dòng),或從后臺(tái)進(jìn)入前臺(tái)顯示,會(huì)觸發(fā) onShow

*/

onShow: function (options) {

// 監(jiān)聽小程序的顯示

console.log('onShow: 當(dāng)小程序啟動(dòng),或從后臺(tái)進(jìn)入前臺(tái)顯示')

},

/**

* 當(dāng)小程序從前臺(tái)進(jìn)入后臺(tái),會(huì)觸發(fā) onHide

*/

onHide: function () {

// 監(jiān)聽小程序的隱藏

console.log('onHide: 小程序從前臺(tái)進(jìn)入后臺(tái)')

}

})

頁面級(jí)別生命周期

知識(shí)點(diǎn):

頁面生命周期就是指小程序頁面從 加載 → 運(yùn)行 → 銷毀的整個(gè)過程

當(dāng)某個(gè)頁面運(yùn)行到某個(gè)時(shí)機(jī)的時(shí)候,我們需要做一些事情,例如: 當(dāng)某個(gè)頁面加載完畢之后,需要發(fā)請(qǐng)求獲取當(dāng)前頁面所需的數(shù)據(jù),就可以在對(duì)應(yīng)的頁面加載完成后的鉤子函數(shù)中執(zhí)行發(fā)送請(qǐng)求的代碼。

小程序中的一個(gè)頁面都需要在對(duì)應(yīng)頁面的 .js 文件中調(diào)用 Page() 方法來注冊(cè)。Page() 接受一個(gè) Object 類型參數(shù),其指定頁面的初始數(shù)據(jù)、生命周期回調(diào)、事件處理函數(shù)等。

生命周期必填說明onLoad否頁面加載時(shí)觸發(fā) (一個(gè)頁面只會(huì)調(diào)用一次)onShow否頁面顯示時(shí)觸發(fā),頁面顯示/切入前臺(tái)時(shí)觸發(fā)onReady否頁面初次渲染完成時(shí)觸發(fā)(一個(gè)頁面只會(huì)調(diào)用一次)代表頁面已經(jīng)準(zhǔn)備妥當(dāng),可以和視圖層進(jìn)行交互onHide否頁面隱藏/切入后臺(tái)時(shí)觸發(fā)onUnload否頁面卸載時(shí)觸發(fā)

代碼:

// pages/home/home.js

Page({

// coding...

// 生命周期函數(shù)--監(jiān)聽頁面加載

onLoad: function (options) {

console.log('頁面加載完畢')

},

// 生命周期函數(shù)--監(jiān)聽頁面顯示

onShow: function () {

console.log('監(jiān)聽頁面顯示,此時(shí)頁面處于顯示狀態(tài)')

},

// 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成

onReady: function () {

console.log('頁面初次渲染已經(jīng)完成')

},

// 生命周期函數(shù)--監(jiān)聽頁面隱藏

onHide: function () {

console.log('當(dāng)前頁面處于隱藏狀態(tài)')

},

// 生命周期函數(shù)--監(jiān)聽頁面卸載

onUnload: function () {

console.log('頁面卸載時(shí)觸發(fā)')

}

})

組件生命周期

組件的生命周期,指的是組件自身的一些函數(shù),這些函數(shù)在特殊的時(shí)間點(diǎn)或遇到一些特殊的框架事件時(shí)被自動(dòng)觸發(fā)。 組件的生命周期函數(shù)需要在 lifetimes 字段內(nèi)進(jìn)行聲明

最重要的生命周期是 created attached detached 包含一個(gè)組件生命周期流程的最主要時(shí)間點(diǎn)

組件實(shí)例剛剛被創(chuàng)建好時(shí), created 生命周期被觸發(fā)。此時(shí),組件數(shù)據(jù) this.data 就是在 Component構(gòu)造器中定義的數(shù)據(jù) data 。 此時(shí)還不能調(diào)用 setData 。 通常情況下,這個(gè)生命周期只應(yīng)該用于給組件 this添加一些自定義屬性字段。在組件完全初始化完畢,進(jìn)入頁面節(jié)點(diǎn)樹后, attached 生命周期被觸發(fā)。此時(shí), this.data 已被初始化為組件的當(dāng)前值。這個(gè)生命周期很有用,絕大多數(shù)初始化工作可以在這個(gè)時(shí)機(jī)進(jìn)行。在組件離開頁面節(jié)點(diǎn)樹后, detached 生命周期被觸發(fā)。退出一個(gè)頁面時(shí),如果組件還在頁面節(jié)點(diǎn)樹中,則 detached 會(huì)被觸發(fā)

代碼:

Component({

lifetimes: {

created: function () {

// 在組件實(shí)例剛剛被創(chuàng)建時(shí)執(zhí)行,注意此時(shí)不能調(diào)用 setData

// 一般用來為組件添加一些自定義屬性字段。

},

attached: function() {

// 在組件實(shí)例進(jìn)入頁面節(jié)點(diǎn)樹時(shí)執(zhí)行

},

detached: function() {

// 在組件實(shí)例被從頁面節(jié)點(diǎn)樹移除時(shí)執(zhí)行

},

},

// 以下是舊式的定義方式,可以保持對(duì) <2.2.3 版本基礎(chǔ)庫的兼容

attached: function() {

// 在組件實(shí)例進(jìn)入頁面節(jié)點(diǎn)樹時(shí)執(zhí)行

},

detached: function() {

// 在組件實(shí)例被從頁面節(jié)點(diǎn)樹移除時(shí)執(zhí)行

},

// ...

})

生命周期必填說明created否在組件實(shí)例剛剛被創(chuàng)建時(shí)執(zhí)行attached否在組件實(shí)例進(jìn)入頁面節(jié)點(diǎn)樹時(shí)執(zhí)行ready否在組件在視圖層布局完成后執(zhí)行moved否在組件實(shí)例被移動(dòng)到節(jié)點(diǎn)樹另一個(gè)位置時(shí)執(zhí)行detached否在組件實(shí)例被從頁面節(jié)點(diǎn)樹移除時(shí)執(zhí)行

組件還有一些特殊的生命周期,這類生命周期和組件沒有很強(qiáng)的關(guān)聯(lián)

主要用于組件內(nèi)部監(jiān)聽父組件的展示、隱藏狀態(tài),從而方便組件內(nèi)部執(zhí)行一些業(yè)務(wù)邏輯的處理

組件所在頁面的生命周期有 4 個(gè): show、 hide、 resize、 routeDone,需要在 pageLifetimes 字段內(nèi)進(jìn)行聲明

Component({

// coding...

// 組件所在頁面的生命周期

pageLifetimes: {

// 監(jiān)聽組件所在的頁面展示(后臺(tái)切前臺(tái))狀態(tài)

show () {

console.log('組件所在的頁面被展示')

},

// 監(jiān)聽組件所在的頁面隱藏(前臺(tái)切后臺(tái)、點(diǎn)擊 tabBar)狀態(tài)

hide () {

console.log('組件所在的頁面被隱藏')

}

}

})

生命周期兩個(gè)細(xì)節(jié)補(bǔ)充說明

tabBar 頁面之間相互切換,頁面不會(huì)被銷毀 點(diǎn)擊左上角,返回上一個(gè)頁面,會(huì)銷毀當(dāng)前頁面(被打開頁面)

總結(jié)

小程序冷啟動(dòng),鉤子函數(shù)執(zhí)行的順序

保留當(dāng)前頁面(navigate) 以及 關(guān)閉當(dāng)前頁面(redirect)

切后臺(tái) 以及 切前臺(tái)(熱啟動(dòng))

柚子快報(bào)激活碼778899分享:java 小程序——生命周期

http://yzkb.51969.com/

推薦閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19582396.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄