Windows Phone 8 Fast Resume 快速恢複淺析(二)

來源:互聯網
上載者:User

承接上文繼續講解WP8 Fast Resume的實現

 

(二)存在Second Tile 的情況

   

我們先定義我們的程式結構如下:

   


 導航關係為:

MainPage->Page1->Page2

 

MainPage可以將Page2 Pin到案頭,如此在案頭上存在兩個程式入口:

1、主表徵圖,點擊後啟動用戶端進入MainPage

2、第二表徵圖,點擊後會直接進入Page2

 
 

上述這種情境在多數程式中會存在,對於這種情況,如果需要啟動Fast Resume 功能,之前的處理會存在問題

當使用者瀏覽到Page1然後按Home切出,再次點擊第二表徵圖時,程式會取消到Page2的導航回到Page1,這在邏輯上是不正確的,所以我們需要額外的操作。

 
 

解決思路:

 
 

程式需要檢測啟動的入口,並且根據入口來判斷是否來自第二表徵圖,如果是,那麼我們需要導航到Page2,並且清空回退棧

 
 

具體代碼實現:

 
 

首先在InitializePhoneApplication的函數裡面添加Navigated事件的處理函數(WP8的預設項目模版已經包含下面這端代碼。

 
 

 
 

下面我們看下這個事件處理的具體代碼:

 
 

 
 

故名思議,這個函數將會檢查當前的NavigationMode是否為Reset,如果是則添加另一個Navigated事件處理(前面提到如果程式開啟了Fast Resume 那麼中途切出程式再進入,會觸發兩次導航,一次為Reset類型,一次為New類型)上面的代碼的目的是在第一次類型為Reset的導航結束後添加Navigated事件處理函數,處理函數會在下一次為New的類型導航完成後觸發。

 
 

 
 

當第二次導航結束後會清空回退棧。

 
 

那麼我們再看下Navigating操作:

 
 

 
 

代碼很簡單,當發現是從SecondTile進入時(deeplink)不做任何處理,而非Deeplink入口則取消第二次導航,用來直觀的展現

 
 

第一種情況,程式會取消第二次導航(類型為New的導航),並且不清除回退棧:

第二種情況,程式不取消第二次導航(類型為New的導航),清除回退棧:

 
 

以上就是程式存在deeplink入口的情況下Fast Resume需要做的處理,整體思路還是比較清晰的。

如果有任何不清楚的地方歡迎留言

 
 

另外WP8開發交流群:QQ:182659848 歡迎加入一起討論

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.