《Windows Phone 8 Development Internals》读书笔记-1-2-1-连载
第二章:應(yīng)用程序模型和導(dǎo)航(1)
本章核心問題:
一、 應(yīng)用程序的生命周期
WP平臺的最大優(yōu)勢在于應(yīng)用程序有著相同且統(tǒng)一的工作方式,所有的應(yīng)用程序都遵循著相同的準(zhǔn)則,這些準(zhǔn)則給用戶帶來了良好的體驗(yàn)。具體包括:
- 同一時間可以有多個應(yīng)用運(yùn)行,但是只能有一個應(yīng)用程序是活動的可以出現(xiàn)在屏幕上;
- 同一時間只能有一個活動頁面,活動頁面是可以相互切換的;
- 用戶可以點(diǎn)擊Win鍵由活動的應(yīng)用程序回到主界面;
- 用戶點(diǎn)擊返回按鍵(左按鍵)可以返回上一屏幕,如果到達(dá)最開始的界面那么再次點(diǎn)擊返回按鍵就退出應(yīng)用程序;
- 幾乎所有的WP應(yīng)用程序采用單實(shí)例存儲(例外:電子郵件采用多實(shí)例方案)
作為應(yīng)用程序開發(fā)者需要注意以下兩個事件:
- 墓碑:應(yīng)用程序是失效的,但是實(shí)例是保存的,沒有任務(wù)程序在內(nèi)存中運(yùn)行,但是系統(tǒng)記得關(guān)鍵點(diǎn),可以保證它被再次激活
- 應(yīng)用程序快速恢復(fù):應(yīng)用程序是失效的,但不是墓碑狀態(tài),然后又快速激活(怎么好理解這個狀態(tài)呢?比如說你進(jìn)入一個應(yīng)用程序,然后持續(xù)按返回按鈕,應(yīng)用程序界面會縮放,當(dāng)你再次點(diǎn)擊應(yīng)用程序界面,界面會放大,再次回到應(yīng)用程序中)
當(dāng)我們利用VS創(chuàng)建一個WP應(yīng)用程序時,會自動生成一些模板代碼和生命周期事件,包括:啟動、激活、失活、關(guān)閉。當(dāng)然用戶也可以重寫OnNavigatedFrom方法和OnNavigatedTo方法。
PS:
| 類 | 事件/方法 | 說明 |
| APP | 啟動 | 創(chuàng)建應(yīng)用程序新實(shí)例 |
| APP | 失活 | 應(yīng)用程序失活,進(jìn)程被殺死,可以保持程序的狀態(tài) |
| APP | 激活 | 重新加載應(yīng)用程序狀態(tài) |
| APP | 關(guān)閉 | 保存狀態(tài)和清理垃圾 |
| 所有 | OnNavigatedFrom | 用戶即將離開當(dāng)前頁 |
| 所有 | OnNavigatedTo | 用戶從其它頁面導(dǎo)航到該頁面 |
?
應(yīng)用程序正常終止:
圖1-1:正常關(guān)閉應(yīng)用程序生命周期
應(yīng)用程序停止-快速恢復(fù):
圖1-2:應(yīng)用程序停止-快速恢復(fù)生命周期
墓碑狀態(tài):
圖1-3:應(yīng)用程序墓碑狀態(tài)生命周期
PS:如果對WP墓碑機(jī)制不太了解的朋友可查閱相關(guān)資料。說的簡單點(diǎn),就是手機(jī)上一個任務(wù)被迫中斷時(如有電話打入),系統(tǒng)記錄下當(dāng)前應(yīng)用程序的狀態(tài)后,(像把事件記錄在墓碑上一樣),然后中止程序。當(dāng)需要恢復(fù)時,根據(jù)“墓碑”上的內(nèi)容,將程序恢復(fù)到中斷之前的狀態(tài)。
對比圖1-2和1-3之間的異同,有助于更好地理解WP各個狀態(tài)的生命周期
失活:
圖1-4:應(yīng)用程序失活
圖1-5:應(yīng)用程序激活
我們現(xiàn)在創(chuàng)建一個WP8應(yīng)用程序,體驗(yàn)下各個過程:
打開App.xaml.cs修改代碼如下
// 應(yīng)用程序啟動(例如,從“開始”菜單啟動)時執(zhí)行的代碼// 此代碼在重新激活應(yīng)用程序時不執(zhí)行private void Application_Launching(object sender, LaunchingEventArgs e){Debug.WriteLine("應(yīng)用程序啟動");}// 激活應(yīng)用程序(置于前臺)時執(zhí)行的代碼// 此代碼在首次啟動應(yīng)用程序時不執(zhí)行private void Application_Activated(object sender, ActivatedEventArgs e){Debug.WriteLine("應(yīng)用程序激活");}// 停用應(yīng)用程序(發(fā)送到后臺)時執(zhí)行的代碼// 此代碼在應(yīng)用程序關(guān)閉時不執(zhí)行private void Application_Deactivated(object sender, DeactivatedEventArgs e){Debug.WriteLine("應(yīng)用程序停止");}// 應(yīng)用程序關(guān)閉(例如,用戶點(diǎn)擊“后退”)時執(zhí)行的代碼// 此代碼在停用應(yīng)用程序時不執(zhí)行private void Application_Closing(object sender, ClosingEventArgs e){Debug.WriteLine("應(yīng)用程序關(guān)閉");}打開MainPage添加代碼:
protected override void OnNavigatedTo(NavigationEventArgs e){Debug.WriteLine("用戶從其它頁面導(dǎo)航到該頁面");}protected override void OnNavigatedFrom(NavigationEventArgs e){Debug.WriteLine("用戶即將離開當(dāng)前頁");}運(yùn)行進(jìn)入模擬器:
過程如下
圖1-6:啟動應(yīng)用程序
圖1-7:應(yīng)用程序失活
圖1-8:激活應(yīng)用程序
圖1-9:應(yīng)用程序關(guān)閉
PS:對于沒有XAML基礎(chǔ)的友友建議抽點(diǎn)時間看看XMAL,這對以后的WP開發(fā)學(xué)習(xí)很有幫助。更新日期:周一~周五
轉(zhuǎn)載于:https://www.cnblogs.com/Foregoer/p/3865565.html
總結(jié)
以上是生活随笔為你收集整理的《Windows Phone 8 Development Internals》读书笔记-1-2-1-连载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个高级的makefile文件
- 下一篇: java设计模式演示样例