Windows phone 8 Fast Resume 快速恢復淺析(一)


(一)概述

   

Windows phone 8 新添加的很重要的一個特性就是 Fast Resume。

這個特性應用的場景如下:

對於wp7而言,用戶瀏覽一段時間app內容后,如果從程序菜單欄點擊app圖標,那么程序會重新從Mainpage開始啟動,

而在wp8我們可根據業務需求,重新點擊app圖標后,回到之前瀏覽的頁面。

   

引用madn上的圖片來直觀的說明下:

圖中用戶進入程序后,進入Page1,然后通過Home鍵回到了桌面,這個時候,如果用戶重新點擊程序主圖標A,那么

在WP7系統中會得到如下的結果:

如圖,用戶重新回到了Main Page 之前瀏覽的界面均被清除。

   

而如果在WP8中如果程序加入了Fast Resume 的特性,那么用戶會得到如下圖的體驗:

   

用戶重新回到Page1,在用戶體驗上和用戶點擊Back鍵一致。這種特性在某些方面有利於增加用戶體驗,開發者因此也有了更多的選擇機會。

   

(二)如何實現

   

對於實現的問題,我會根據需求場景來具體說明,分我如下兩種種情況:

1.程序不存在SecondTile,也就是用戶只能通過程序AppList和MainTile啟動

2.程序存在SecondTile,一下簡稱deeplink,即用戶可以通過入口直接進入非MainPage界面

   

(1)最簡單的場景,程序不存在SecondTile

 

a.原理

1、對於wp程序而言,在執行Navigate的時候會觸發NavigatXXX相關的一系列事件,其中RootFrame的Navigating事件的參數中存在NavigatingCancelEventArgs 類型的參數,我們可以通過此參數中的屬性獲取到本次導航的類型,及要導航到的Uri路徑,並且可以通過設置此參數進行本次導航的取消。

   

2、在App的WMAppManifest.xml文件中我們可以設置程序的ActivationPolicy這個參數控制程序是否支持FastResume:

如此設置后,概述中提到的場景,用戶第二次點擊MainTile進入程序會觸發兩次Navigating,一次NavigationModel參數類型為Reset如下:

之后會再次導航,此時NavigationMode為New如下:

   

b.實現

看到應該已經有思路如何來處理了,我們在修改WMAppManiFest.xml后,需要在app.xaml.cs中做如下改動:

首先下圖中第127行,添加Navigating事件處理函數

   

在事件處理中操作如下:

   

上面提到當設置Fast Resume后 進入程序會執行兩次導航,所以需要在第一次類型為Reset的時候記錄下來,當第二次執行New類型的導航時,將本次導航取消,下圖直觀的說明了此函數的處理:

   

當從MainTile第二次進入時取消到MainPage的導航即可

   

對於第二種情況存在SecondTile的時候的處理我會在后面繼續更新出來,謝謝支持!

如需demo,請留下郵箱,我會發給你來學習:-)

   

另外WP8開發交流群:QQ:182659848


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM