まず、アプリケーションのライフサイクル
アプリ()関数は、小さなプログラムを登録するために使用されます。オブジェクトパラメータ、そのライフサイクルおよびその他の指定されたアプレットの機能を受け入れます。
オブジェクトパラメータ:
プロパティ |
タイプ |
説明 |
トリガーとき |
onLaunch |
関数 |
ライフサイクル機能 - モニタアプレットの初期化 |
アプレットの初期化が完了すると、それは(グローバルは一度だけトリガー)onLaunchトリガされます |
onShow |
関数 |
ライフサイクル機能 - モニタアプレットを表示 |
アプレットが開始、またはバックグラウンドからフォアグラウンド表示にした場合onShowトリガします |
onHide |
関数 |
ライフサイクル機能 - 小さなプログラム隠さリスニング |
バックグラウンドにフォアグラウンドからアプレットは、それがonHideトリガするとき |
前景は、背景が定義されています。ユーザーは、マイクロチャネルデバイスを残すために、左上隅を閉じる、またはHomeキーを押してクリックすると、アプレットを直接破壊されていませんが、バックグラウンドに、入力するか、再度アプレットを再度開くマイクロ文字、バックグラウンドからフォアグラウンドに入ります。
アプリケーションのライフサイクル
- ユーザは、最初onLaunch(グローバル回だけトリガ)をトリガする、小さなプログラムを開きます。
- アプレットの初期化が完了すると、トリガーonShow方法、モニタアプレットが表示されます。
- onHideメソッドをトリガ背景に前景からアプレット。
- onShowメソッドをトリガ前景表示に背景からアプレット。
- バックグラウンドで一定の時間、またはシステムリソースを実行しているアプレットは、あまりにも、破壊されます。
サンプルコード:
アプリ({
onLaunch:関数(){
//最初に開きました
}、
onShow:関数(){
//初期化後のアプレットは完了です
}、
onHide:関数(){
//バックグラウンドにフォアグラウンドからアプレット
}、
onError:関数(MSG){
console.log(MSG)
}、
グローバルデータ:「グローバルデータ」
})
アプレットはグローバルgetApp()関数は、アプレットのインスタンスを得ることができる提供します。
// other.jsvar appInstance = getApp()はconsole.log(appInstance.globalData)//私はグローバルデータです
注:
アプリケーション()にapp.jsに登録する必要があり、かつ1以上のものを登録することはできません。
コールgetApp()内のApp(機能)で定義されてはいけない、あなたは、インスタンスを取得するには、このアプリを使用することができます。
()のonLaunchは、そのページが生成されていない場合getCurrentPageを呼び出さないでください。
getAppによって(インスタンスを取得した後に、ライフサイクルの関数を呼び出すしないでください)。
ページのライフサイクル
ページ()関数は、ページを登録するために使用されます。初期データ・ページは、そのようなイベントハンドラとしてライフサイクルの機能を、指定したオブジェクトのパラメータを、受け入れます。
オブジェクトパラメータ:
プロパティ |
タイプ |
説明 |
データ |
オブジェクト |
データの最初のページ |
onLoad |
関数 |
ライフサイクル機能 - ページのロードのために聞きます |
onReady |
関数 |
ライフサイクル機能 - 最初のページのレンダリングを聞くが完了しました |
onShow |
関数 |
ライフサイクル機能 - ページの表示モニター |
onHide |
関数 |
ライフサイクル機能 - モニタページを隠します |
ONUNLOAD |
関数 |
ライフサイクル機能 - モニタページのアンロード |
ページのライフサイクル
- アプレットの登録が完了すると、ページがonLoadの方法をトリガ、ロードされます。
- ページの後トリガーonShowページを表示するための方法にロードされます。
- 最初の表示ページは、ページ要素とスタイルをレンダリング、onReadyメソッドをトリガーすると、ページは一度だけ呼び出されます。
- アプレットは、バックグラウンドで実行されているかonHide方法をトリガー、他のページにジャンプしたとき。
- アプレットは、フォアグラウンドonShow方法をトリガ、入力するか、ページを再入力するバックグラウンドを持っている場合。
- リダイレクション方式のwx.redirectTo(オブジェクト)を使用するか、現在のページへ戻るwx.navigateBackを()閉じると、ONUNLOADを引き起こしました。
要約:
- onLoad:ページがロードされます。
1)ページには、一度だけ呼ばれます。
2)パラメータ、クエリにwx.navigateToとwx.redirectTo <ナビゲータ/>を取得してもよいです。 - onShow:ページ表示
1)を使用すると、ページを開くたびに一度呼び出されます。 - onReady: 页面初次渲染完成
1)一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
2)对界面的设置如wx.setNavigationBarTitle请在onReady之后设置。详见生命周期
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F - onHide: 页面隐藏
1)当navigateTo或底部tab切换时调用。 - onUnload: 页面卸载
1)当redirectTo或navigateBack的时候调用。
示例代码:
//index.js
Page({
data: {
text: "This is page data."
},
onLoad: function(options) {
// some initialize when page load.
},
onReady: function() {
// something when page ready.
},
onShow: function() {
// something when page show.
},
onHide: function() {
// something when page hide.
},
onUnload: function() {
// something when page close.
},
onPullDownRefresh: function() {
// something when pull down.
},
onReachBottom: function() {
// something when page reach bottom.
},
onShareAppMessage: function () {
// share data when user share.
},
// Event handler.
viewTap: function() {
this.setData({
text: 'updating view.'
})
},
customData: {
Name: 'name'
}
})
三、用Page 实例说明的页面的生命周期
页面的生命周期
小程序由两大线程组成:负责界面的视图线程(view thread)和负责数据、服务处理的服务线程(appservice thread),两者协同工作,完成小程序页面生命周期的调用。
视图线程有四大状态:
- 初始化状态:初始化视图线程所需要的工作,初始化完成后向 “服务线程”发送初始化完成信号,然后进入等待状态,等待服务线程提供初始化数据。
- 首次渲染状态:当收到服务线程提供的初始化数据后(json和js中的data数据),渲染小程序界面,渲染完毕后,发送“首次渲染完成信号”给服务线程,并将页面展示给用户。
- 持续渲染状态:此时界面线程继续一直等待“服务线程”通过this.setdata()函数发送来的界面数据,只要收到就重新局部渲染,也因此只要更新数据并发送信号,界面就自动更新。
- 结束状态:页面被回收或者销毁、应用被系统回收、销毁时触发。
服务线程五大状态:
- 初始化状态:此阶段仅启动服务线程所需的基本功能,比如信号发送模块。系统的初始化工作完毕,就调用自定义的onload和onshow,然后等待视图线程的“视图线程初始化完成”号。onload是只会首次渲染的时候执行一次,onshow是每次界面切换都会执行,简单理解,这就是唯一差别。
- 等待激活状态:接收到“视图线程初始化完成”信号后,将初始化数据发送给“视图线程”,等待视图线程完成初次渲染。
- 激活状态:收到视图线程发送来的“首次渲染完成”信号后,就进入激活状态既程序的正常运行状态,并调用自定义的onReady()函数。此状态下就可以通过 this.setData 函数发送界面数据给界面线程进行局部渲染,更新页面。
- 后台运行状态:如果界面进入后台,服务线程就进入后台运行状态,从目前的官方解读来说,这个状态挺奇怪的,和激活状态是相同的,也可以通过setdata函数更新界面的。毕竟小程序的框架刚推出,应该后续会有很大不同吧。
- 结束状态:页面被回收或者销毁、应用被系统回收、销毁时触发。
四、应用的生命周期对页面生命周期的影响
应用生命周期与页面生命周期之间的关系
- 小程序初始化完成后,页面首次加载触发onLoad,只会触发一次。
- 当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。
- 当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法。