天天看點

WP7 應用資料存儲Tombstoning(墓碑化)篇

  Windows Phone 可以支援5個墓碑化(Tombstoning)應用程式,第三方開發的應用程式隻能使用最後一個墓碑空間,最新的墓碑化應用程式會自動替換前一個程式。我們可以利用墓碑化功能暫時儲存應用程式目前狀态,如果使用者有意或無意觸碰了手機Home 按鍵,并再次點選Back 按鍵時應用程式會從墓碑化狀态激活并傳回最後應用程式狀态。

     在開發墓碑化應用程式時,我們可以使用兩種資料存儲方式:應用程式狀态(Application State)、頁面狀态(Page State),這兩種方式最大的差別在于資料存儲和使用範圍不同,應用程式狀态通過PhoneApplicationService.State 屬性可存儲所有應用程式頁面的資料,并不局限于某一個頁面,不同的頁面可以通過PhoneApplicationService.State 來擷取相關的資料。頁面狀态使用PhoneApplicationPage.State 屬性針對的是單獨頁面的資料内容,當使用者點選Back 按鍵傳回時,系統将傳回使用者之前看到的頁面資訊。需要注意的是這些存儲都是暫時性的,如果應用程式需要永久的資料存儲,還應當使用獨立存儲(IsolatedStorage)方式,具體可參考《WP7 應用資料存儲IsolatedStorage 篇》。

     下面我們來做一個簡單的執行個體應用,建立一個Windows Phone 項目,加入TextBox 控件。

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

    <StackPanel Orientation="Vertical">

        <TextBlock Text="Input text here:"/>

        <TextBox x:Name="testTextBox" Height="70"/>

    </StackPanel>

</Grid>

     在存儲頁面資料時我們需要使用OnNavigatedFrom 和OnNavigatedTo 方法,當使用者離開某頁面時将會啟動該頁面的OnNavigatedFrom 方法,當轉向某頁面時将執行該頁面的OnNavigatedTo 方法。在使用上述方法時需要增加System.Windows.Navigation 命名空間。

     首先我們來編寫OnNavigatedFrom 方法的内容,當使用者離開MainPage 頁面後,将testTextBox 中填寫的内容儲存到textVal 鍵。此處使用的是PhoneApplicationPage.State 方式進行存儲。

protected override void OnNavigatedFrom(NavigationEventArgs e)

{

    State["textVal"] = testTextBox.Text;

    base.OnNavigatedFrom(e);

}

     接下來繼續編寫OnNavigatedTo 方法,當使用者點選Back 按鍵傳回MainPage頁面,将恢複之前testTextBox 填寫的内容。通過State.TryGetValue 方法即可獲得之前儲存到textVal 鍵中的值。

protected override void OnNavigatedTo(NavigationEventArgs e)

    object textObj;

    if (State.TryGetValue("textVal", out textObj))

    {

        testTextBox.Text = textObj.ToString();

    }

    base.OnNavigatedTo(e);

     如果這個TextBox 的内容将用于整個應用程式,任何頁面都能夠通路到這個資料,則需要使用PhoneApplicationService.State 方法。在程式中增加Microsoft.Phone.Shell 命名空間,将程式稍微調整如下。

PhoneApplicationService service = PhoneApplicationService.Current;

    service.State["textVal"] = testTextBox.Text;

    if (service.State.TryGetValue("textVal", out textObj))

     如果需要在非MainPage 頁面擷取textTextBox 内的值,可直接在該頁面增加OnNavigatedTo 方法讀取textVal 鍵值。通過以上兩種方式就能夠将應用程式目前狀态進行墓碑化操作,友善使用者恢複程式之前的狀态。

效果圖

錄入文字;點選Home 鍵轉到首頁:

點選Back 按鍵,系統将恢複之前輸入的文字:

相關資料

Running your app in the background (tombstoning)

How to: Preserve and Restore Page State for Windows Phone

本文轉自Gnie部落格園部落格,原文連結:http://www.cnblogs.com/gnielee/archive/2011/06/13/wp7-tombstoning.html,如需轉載請自行聯系原作者

繼續閱讀