自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用獨(dú)立存儲(chǔ)開(kāi)發(fā)Windows Phone 7應(yīng)用程序

移動(dòng)開(kāi)發(fā)
前不久我們講過(guò)".NET平臺(tái)開(kāi)發(fā)Windows Phone 7、iPhone及Android應(yīng)用",在新的更新包內(nèi)微軟給Windows Phone 7增加了一項(xiàng)獨(dú)立存儲(chǔ)的概念,就是在移動(dòng)智能設(shè)備中存儲(chǔ)本地?cái)?shù)據(jù)的方法。

前不久我們講過(guò)".NET平臺(tái)開(kāi)發(fā)Windows Phone 7、iPhone及Android應(yīng)用",在新的更新包內(nèi)微軟給Windows Phone 7增加了一項(xiàng)獨(dú)立存儲(chǔ)的概念,就是在移動(dòng)智能設(shè)備中存儲(chǔ)本地?cái)?shù)據(jù)的方法。

什么是獨(dú)立存儲(chǔ)?

獨(dú)立存儲(chǔ)不是一個(gè)新概念。在Silverlight 2中已經(jīng)在使用了。本質(zhì)上說(shuō)這是一種在本地文件系統(tǒng)中存儲(chǔ)數(shù)據(jù)或文件的方式。“獨(dú)立(isolated)”是因?yàn)橹挥心愕某绦虿趴梢栽L問(wèn)這些數(shù)據(jù)。如果你有兩個(gè)應(yīng)用程序,同時(shí)你想在它們之間共享數(shù)據(jù)的話,***使用一些類似基于云的可以讓你共享數(shù)據(jù)的服務(wù)。一個(gè)應(yīng)用程序不能共享,調(diào)用設(shè)備上其他的應(yīng)用程序或與之進(jìn)行交互。

  1.     void SaveLocal(string data)    
  2.     {    
  3. #if (MonoTouch || MonoDroid)    
  4.         File.WriteAllText(_localPath, data);    
  5. #elif WINDOWS_PHONE    
  6.         using (var appStorage =     
  7.             IsolatedStorageFile.GetUserStoreForApplication())    
  8.         {    
  9.             var file = appStorage.OpenFile(_localPath, FileMode.Create);    
  10.             FileExtension.WriteAllText(file, data);    
  11.         }    
  12. #endif    
  13.     }    
  14.  

設(shè)置和文件

有兩種方式在本地存儲(chǔ)你的數(shù)據(jù)。***是通過(guò)庫(kù)中的鍵/值對(duì),叫做IsolatedStorageSettings。第二是通過(guò)創(chuàng)建真實(shí)的文件和目錄,叫做IsolatedStorageFile。下圖簡(jiǎn)要介紹了這些(由MSDN提供),我會(huì)為每種方式提供一個(gè)深入的例子。

使用獨(dú)立存儲(chǔ)開(kāi)發(fā)Windows Phone 7應(yīng)用程序
IsolatedStorageSettings

有很多時(shí)候,這可能是你需要的唯一存儲(chǔ)方式。IsolatedStorageSettings允許你在一個(gè)字典中存儲(chǔ)鍵/值對(duì)(注意,無(wú)需任何設(shè)定),然后再讀取出來(lái)。這些數(shù)據(jù)會(huì)一直保存著,無(wú)論應(yīng)用程序停止/啟動(dòng),或者關(guān)機(jī)等等。除非你刪除它,或者用戶卸載你的應(yīng)用程序,否則它一直存在。要記住的一點(diǎn)是在它被添加到字典中之前你無(wú)法讀取它。在我的每個(gè)例子中,你都會(huì)看到在讀取數(shù)據(jù)之前檢查值是否它存在的代碼。下面的例子是在用戶在你的程序中接收電子郵件更新時(shí)需要保存用戶設(shè)定的代碼。我用了一個(gè)多選框允許用戶選擇,還有一個(gè)將此值保存到獨(dú)立存儲(chǔ)中的事件。

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Net;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Documents;  
  8. using System.Windows.Input;  
  9. using System.Windows.Media;  
  10. using System.Windows.Media.Animation;  
  11. using System.Windows.Shapes;  
  12. using Microsoft.Phone.Controls;  
  13. using System.IO.IsolatedStorage;  
  14.  
  15. namespace Day15_IsolatedStorage  
  16. {  
  17.     public partial class MainPage : PhoneApplicationPage  
  18.     {  
  19.         IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;  
  20.           
  21.         // Constructor  
  22.         public MainPage()  
  23.         {  
  24.             InitializeComponent();  
  25.             InitializeSettings();  
  26.         }  
  27.  
  28.         private void InitializeSettings()  
  29.         {  
  30.             if (settings.Contains("emailFlag"))  
  31.             {  
  32.                 EmailFlag.IsChecked = (bool)settings["emailFlag"];  
  33.             }  
  34.             else settings.Add("emailFlag", false);  
  35.         }  
  36.  
  37.         private void EmailFlag_Unchecked(object sender, RoutedEventArgs e)  
  38.         {  
  39.             settings["emailFlag"] = false;  
  40.         }  
  41.  
  42.         private void EmailFlag_Checked(object sender, RoutedEventArgs e)  
  43.         {  
  44.             settings["emailFlag"] = true;  
  45.         }  
  46.     }  
  47. }  
  48.  

正如你所見(jiàn),這非常簡(jiǎn)單。請(qǐng)記住以下內(nèi)容:

如果還沒(méi)在IsolatedStorageSettings中創(chuàng)建就讀取它的值會(huì)拋出一個(gè)異常。確認(rèn)你已經(jīng)初始化了設(shè)置,或者總是使用Contains方法先檢查一下。

你可以在設(shè)置中保存任意內(nèi)容。在我的例子中,我保存了一個(gè)布爾值,但你可以保存一個(gè)客戶對(duì)象,或者任何你能想到的。

記住當(dāng)你讀取數(shù)據(jù)時(shí)你需要將它顯示強(qiáng)制轉(zhuǎn)換。你會(huì)看到我在使用之前將數(shù)據(jù)轉(zhuǎn)換為bool值。雖然你保存了對(duì)象,但并沒(méi)有保存它的類型。是否能看到類型取決于你自己。

設(shè)置一個(gè)值和在庫(kù)中添加它效果是一樣。“settings.Add()”的語(yǔ)句實(shí)際上不是必需的,我添加它是為了讓你看清語(yǔ)法。

就這些。IsolatedStorageSettings非常簡(jiǎn)單。只用極少的代碼就可保存鍵/值對(duì)。創(chuàng)建和保存文件相對(duì)略復(fù)雜一些,但還是十分簡(jiǎn)單。

IsolatedStorageFile

使用IsolatedStorageFile是一種讓你可以在用戶的設(shè)備中存儲(chǔ)真實(shí)文件的機(jī)制。在我的例子中,在一個(gè)子目錄中創(chuàng)建了一個(gè)文本文件,并讀取文件中的內(nèi)容。我們還可以創(chuàng)建和刪除目錄,子目錄及文件??雌饋?lái)有很多代碼,但實(shí)際上非常簡(jiǎn)單。我們創(chuàng)建一個(gè)新的IsolatedStorageFile對(duì)象,并使用一個(gè)IsolatedStorageFileStream對(duì)象將它寫(xiě)入到驅(qū)動(dòng)器中。我在代碼中加入了注釋,這樣你可以更清楚地看到發(fā)生了什么。有兩個(gè)事件處理程序,一個(gè)用來(lái)保存文件,另一個(gè)讀取:

  1. using System.IO.IsolatedStorage;  
  2. using System.IO;  
  3.  
  4. private void SaveButton_Click(object sender, RoutedEventArgs e)  
  5. {  
  6.     //Obtain a virtual store for application  
  7.     IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication();  
  8.  
  9.     //Create new subdirectory  
  10.     fileStorage.CreateDirectory("textFiles");  
  11.  
  12.     //Create a new StreamWriter, to write the file to the specified location.  
  13.     StreamWriter fileWriter = new StreamWriter(new IsolatedStorageFileStream("textFiles\\newText.txt", FileMode.OpenOrCreate, fileStorage));  
  14.     //Write the contents of our TextBox to the file.  
  15.     fileWriter.WriteLine(writeText.Text);  
  16.     //Close the StreamWriter.  
  17.     fileWriter.Close();  
  18. }  
  19.  
  20. private void GetButton_Click(object sender, RoutedEventArgs e)  
  21. {  
  22.     //Obtain a virtual store for application  
  23.     IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication();  
  24.     //Create a new StreamReader  
  25.     StreamReader fileReader = null;  
  26.  
  27.     try  
  28.     {  
  29.         //Read the file from the specified location.  
  30.         fileReader = new StreamReader(new IsolatedStorageFileStream("textFiles\\newText.txt", FileMode.Open, fileStorage));  
  31.         //Read the contents of the file (the only line we created).  
  32.         string textFile = fileReader.ReadLine();  
  33.  
  34.         //Write the contents of the file to the TextBlock on the page.  
  35.         viewText.Text = textFile;  
  36.         fileReader.Close();  
  37.     }  
  38.     catch  
  39.     {  
  40.         //If they click the view button first, we need to handle the fact that the file hasn't been created yet.  
  41.         viewText.Text = "Need to create directory and the file first.";  
  42.     }  
  43. }  
  44.  

離開(kāi)程序時(shí)這多像一個(gè)迷人的魔術(shù),再回來(lái)時(shí),會(huì)再次載入文件(它還在那兒!)。

你都知道了。現(xiàn)在我們?cè)赪indows Phone 7中有兩種存儲(chǔ)機(jī)制可以用。IsolatedStorageSettings和IsolatedStorageFile。我們非常希意聽(tīng)到你在程序中使用這兩種存儲(chǔ)結(jié)構(gòu)的創(chuàng)新用法,與我們一同分享。

【編輯推薦】

  1. .NET平臺(tái)開(kāi)發(fā)Windows Phone 7、iPhone及Android應(yīng)用
  2. 簡(jiǎn)述Windows Phone 7應(yīng)用程序開(kāi)發(fā)平臺(tái)
  3. Windows Phone 7對(duì)比Android 平分秋色
  4. 多圖詳解 Windows Phone 7功能升級(jí)過(guò)程
  5. Windows Phone 7開(kāi)發(fā)工具發(fā)布更新包 附下載地址
責(zé)任編輯:佚名 來(lái)源: ITpub
相關(guān)推薦

2011-03-21 09:05:40

IronRubyWindows Pho

2010-11-03 15:10:04

SilverlightSilverlightWindows Pho

2012-08-01 10:26:33

Windows Pho

2011-04-08 10:02:06

日歷Windows Pho

2011-04-01 13:20:40

Windows Pho應(yīng)用程序

2012-05-17 14:15:10

Windows Pho

2013-07-30 13:38:27

Windows PhoWindows Pho

2013-07-31 14:50:32

Windows PhoWP應(yīng)用程序生命周期

2011-10-25 10:24:03

Windows Pho

2012-05-28 15:37:20

WP程序生命周期

2013-07-30 11:18:37

Windows PhoWindows Pho

2010-08-27 09:36:57

Windows Pho

2011-06-07 11:35:38

Windows Pho

2012-08-16 10:35:50

Windows Pho

2013-04-19 15:35:54

Windows Pho隔離存儲(chǔ)

2010-12-14 18:48:49

微軟

2011-06-08 10:24:38

Windows Pho 應(yīng)用程序

2011-06-08 10:01:36

Windows Pho 應(yīng)用程序

2011-12-03 21:03:14

Windows Pho

2010-10-29 14:08:01

.NETWindows PhoiPhone
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)