Windows Phone開發之隔離儲存區 (Isolated Storage)二

來源:互聯網
上載者:User

問題現象:
在實際應用過程中,常常是在操作一個程式時,會突然插入新的任務,當前任務就要提交到後台,去執行新的程式。正比如,一個使用者正在註冊一個網站,正在填寫表單資訊,但是一個優先順序更高的任務需要解決,這樣會用到Back或Start按鍵來選擇其他動作。如果註冊表單的資料不儲存的話,在重新載入該頁面時可能會遺失資料,這對使用者來說是很差的體驗。本篇就要解決這樣的問題。

程式案例:
MainPage只有一個TextBox。有TextBox的myTextBox_TextChanged事件和MainPage的Root_Loaded事件:
流程是這樣的:
首先,在TextBox輸入內容,根據myTextBox_TextChanged事件儲存到phoneAppService.State中,通過APP.xaml.cs檔案中的Application_Launching、Application_Activated、Application_Deactivated、Application_Closing事件來儲存和讀取phoneAppService.State資料到隔離儲存區 (Isolated Storage)IsolatedStorageSetting中。
因為phoneAppService.State資料在Back或Start之後會被記憶體刪掉的,只能儲存到隔離儲存區 (Isolated Storage)的特殊功能上。
切記:模擬器重啟(相當於真機重啟)之後都不會儲存。

private void myTextBox_TextChanged(object sender, TextChangedEventArgs e)        { //儲存文字框的內容            PhoneApplicationService phoneAppService = PhoneApplicationService.Current;            phoneAppService.State["myValue"] = myTextBox.Text;        } private void Root_Loaded(object sender, RoutedEventArgs e)        { PhoneApplicationService phoneAppService = PhoneApplicationService.Current;            if (phoneAppService.State.ContainsKey("myValue")) {                myTextBox.Text = phoneAppService.State["myValue"].ToString();            }        }

-------------------------------  
APP.xaml.cs檔案:

 // 應用程式啟動(例如,從“開始”菜單啟動)時執行的代碼        // 此代碼在重新啟用應用程式時不執行        private void Application_Launching(object sender, LaunchingEventArgs e)        {            LoadMyValue();        }        // 啟用應用程式(置於前台)時執行的代碼        // 此代碼在初次開機應用程式時不執行        private void Application_Activated(object sender, ActivatedEventArgs e)        {            LoadMyValue();        }        // 停用應用程式(發送到後台)時執行的代碼        // 此代碼在應用程式關閉時不執行        private void Application_Deactivated(object sender, DeactivatedEventArgs e)        {            SaveMyValue();        }        // 應用程式關閉(例如,使用者點擊“後退”)時執行的代碼        // 此代碼在停用應用程式時不執行        private void Application_Closing(object sender, ClosingEventArgs e)        {            SaveMyValue();        } private void SaveMyValue() {            PhoneApplicationService phoneAppService = PhoneApplicationService.Current;            IsolatedStorageSettings setting = IsolatedStorageSettings.ApplicationSettings;            if (phoneAppService.State.ContainsKey("myValue"))            {                setting["myValue"] = phoneAppService.State["myValue"];            }        }        private void LoadMyValue()        {            PhoneApplicationService phoneAppService = PhoneApplicationService.Current;            IsolatedStorageSettings setting = IsolatedStorageSettings.ApplicationSettings;            if (setting.Contains("myValue"))            {                phoneAppService.State["myValue"] = setting["myValue"];            }        }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.