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;protected override void OnNavigatedFrom(NavigationEventArgs e) {service.State["textVal"] = testTextBox.Text;base.OnNavigatedFrom(e); }protected override void OnNavigatedTo(NavigationEventArgs e) {object textObj;if (service.State.TryGetValue("textVal", out textObj)){testTextBox.Text = textObj.ToString();}base.OnNavigatedTo(e); }??????? 如果需要在非MainPage 頁面獲取textTextBox 內的值,可直接在該頁面增加OnNavigatedTo 方法讀取textVal 鍵值。通過以上兩種方式就能夠將應用程序當前狀態進行墓碑化操作,方便使用者恢復程序之前的狀態。
效果圖
錄入文字;點擊Home 鍵轉到首頁:
?
點擊Back 按鍵,系統將恢復之前輸入的文字:
?
相關資料
Running your app in the background (tombstoning)
How to: Preserve and Restore Page State for Windows Phone
總結
以上是生活随笔為你收集整理的WP7 应用数据存储Tombstoning(墓碑化)篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计师必备网址 百度MUX
- 下一篇: 含有负边的图的最短路径(Bellman_