[英]WP7 running method on exit
我的WP7中有一個頁面,其中包含一些文本框。 當按返回鍵時,將運行此方法來保存內容:
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
var settings = IsolatedStorageSettings.ApplicationSettings;
settings["remZone"] = txtBoxZone.Text;
settings["remSpace"] = txtBoxSpace.Text;
}
問題是某些用戶不會按“后退”按鈕,而是會按“主頁”按鈕退出應用程序,因此不會保存內容。
我認為,如果可能的話,有兩種解決方法:1.是否存在可以在按下主屏幕按鈕時運行此方法的函數,例如onBackKeyPress。 2.在用戶輸入文本框時,是否有一種簡單的方法來保存文本框的內容?
謝謝。
編輯:
解決方案是這樣的:
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
var settings = IsolatedStorageSettings.ApplicationSettings;
settings["remZone"] = txtBoxZone.Text;
settings["remSpace"] = txtBoxSpace.Text;
}
解決您的問題的最簡單方法是重寫Page.OnNavigatingFrom
方法。
Backpress不是您收到的唯一事件,還有一個App.Deactivated事件,該事件可以確保您的應用程序以任何方式退出屏幕時都會被調用。
在您的Page(.ctor或Loaded事件處理程序)中,將處理程序附加到該事件,並在該處理程序中收集在關閉時必須存儲的所有內容。 這是確保它不會蒸發的最簡單方法。 只要記住要在Page.Unloaded上取消鏈接該處理程序,否則您將大大泄漏內存/資源!
順便說一句。 編碼
var settings = IsolatedStorageSettings.ApplicationSettings;
settings["remZone"] = txtBoxZone.Text;
settings["remSpace"] = txtBoxSpace.Text;
在某些情況下還不夠。 如果確實需要確保設置保持不變,則必須在更改后手動調用Save():
var settings = IsolatedStorageSettings.ApplicationSettings;
settings["remZone"] = txtBoxZone.Text;
settings["remSpace"] = txtBoxSpace.Text;
settings.Save(); // think about it, you may want it!
這是因為設置是在某些特定的情況下存儲的,例如應用程序退出,邏輯刪除等。我不記得它們在停用時會被保存,因此僅按Back可能不會將它們保存到ISO。 更重要的是,如果您設置了它們並且應用程序崩潰(例如,由於未處理的異常而導致)或電池/電源出現故障,或者用戶只是關閉了手機,它們將不會被存儲!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.