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