Hands-On Lab 快速應用程序切換

 

 

Hands-On Lab

快速應用程序切換

 

 

Lab version:    1.0.0

Last updated:          2/29/2012

 


 

內容

概述... 3

課程 . 4

任務 1 – 檢測 FAS. 4

任務 2 – 在應用程序中強制執行墓碑機制... 5

課程總結... 5

 


 

 

原有的Windows® Phone操作系統擁有的每個應用程序沒有激活墓碑機制,這就意味着其狀態會序列化並被保存在應用程序的獨立存儲中。當用戶返回墓碑化的應用程序時,他不得不等待應用程序反序列化其狀態並恢復狀態。

在Windows® Phone Mango版本中不再需要這樣的機制了。一旦應用程序被切換到後臺,操作系統將保證其鏡像仍然保存在內存中,這樣在激活應用程序時就不需要額外的性能開銷了。當用戶再次激活應用程序時,用戶體驗可以達到在瞬間恢復應用程序在內存中的狀態。

這種新的機制叫做快速應用程序切換(Fast Application Switching ,FAS),在本次實驗中,我們將演示在應用程序切換到後臺後,如何存儲應用程序的狀態。瞭解您的應用程序鏡像是否被保存,允許你執行必要的操作來恢復應用程序的狀態。本次實驗中將演示如何使用Tidy應用程序來執行這種。

目標

本次動手實驗,包括下列的任務:

·                 識別,一旦你的應用程序被激活,鏡像是否被保持。

·                 在Debug狀態下,強制應用程序執行墓碑機制。

 

前提條件

您在開始本次動手實驗前,請先確認達到下列前提條件:

·        Microsoft Visual Studio 2010 或者 Microsoft Visual C# Express2010, 和 Windows® Phone 7 Codenamed “Mango” Developer Tools,下載地址: http://go.microsoft.com/?linkid=9772716

·        如何創建 Windows® Phone 7應用程序的支持
(如果您是新的Windows® Phone 7開發者,您可以首先閱讀: http://msdn.microsoft.com/en-us/gg266499).

·        熟悉 Windows® Phone應用程序生命週期管理系統.

 


 

 

本次動手實驗沒有演示如何在應用程序裏實現狀態保存。存儲已經在Tidy應用程序中實現了,我們要實驗這些代碼如何與FAS交互。

任務 1 – 檢測 FAS

Thistask shows how easy it is to know that the application was restored from itspreserved in-memory image.

這個任務將演示如何容易瞭解,應用程序是否從其保存在內存中的鏡像中還原了。

1.               打開位於Source\End 目錄的 Tidy 應用程序解決方案,定位 Todo 工程打開 App.xaml.cs文件.

2.               通過App 類的 Application_Activated方法查看應用程序如何控制激活:

C#

private voidApplication_Activated(object sender, ActivatedEventArgs e)

{

    // Ensure that application state is restored appropriately

    if (!e.IsApplicationInstancePreserved)

    {

        WasTombstoned= true;

        App.AppInitialized = true;

        Thread initialDataLoad = newThread(new ThreadStart(InitializeData));

        initialDataLoad.Start();

    }

    else

    {

        WasTombstoned= false;

    }

}

請注意 ActivatedEventArgs 中包含了 IsApplicationInstancePreserved屬性. 通過該屬性,可以容易地瞭解應用程式是否保存在內存中,如果應用程序保存了,則爲true,如果墓碑機制被觸發則爲false。

當Tidy應用程序初始化時,這個耗時的任務會連接存儲應用程序數據的本地數據庫,並且將數據加載到內存中。當應用程序被存儲在內存中時,這些長時操作就沒必要發生,從數據庫中加載的數據仍然保存在內存中。

提示:上面的例子演示了,如果應用程序的鏡像被存儲,則不需要進一步的初始化工作。事實並非總是如此,當應用程序鏡像被存儲時,不能執行任何操作。一旦鏡像被存儲,你也許需要做一些額外的操作。

例如,如果你的應用程序使用socket(另外一項WindowsPhone Mango的新功能),應用程序切換到後臺時,無論觸發墓碑機制與否,由於應用程序無法暫停,所有活動連接將會被終止。一旦你的應用程序被重新激活,你需要重新建立網絡連接。

 

任務 2 –在應用程序中強制執行墓碑機制

Windows® Phone Mango 應用程序生命週期管理器的默認行爲,是儘可能存儲到內存中。如果您的應用程序墓碑機制是非常複雜的,設備沒有足夠內存時纔會觸發墓碑機制,刪除掉某些應用程序鏡像,而對於調試來說,這種情況的出現就太過困難了。

Luckily, the new developer tools allow us to force an application toforego FAS in favor of tombstoning. We will now see how to force an applicationto tombstone.

幸運的是,新的開發工具中允許開發者強制應用程序忽略FAS,直接進入墓碑機制。我們將看到如何強制應用程序進入墓碑機制。

1.               訪問 Todo 工程的屬性,訪問到 “Debug” 頁面:

Figure 1

A phoneapplication project’s debug settings

2.               選中 “Tombstone upon deactivation while debugging”複選框。你的應用程序將會執行墓碑機制代碼,並且附加調試器。清空複選框,則應用程序會再次進入FAS狀態。

 

本次動手實驗演示瞭如何檢測FAS,並且如何提高存儲應用程序狀態的用戶體驗。我們也瞭解瞭如何在Debug時,強制應用程序進入墓碑機制。

 


發佈了23 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章