当前位置: 首页 > 科技观察

使用独立存储开发Windows Phone 7应用程序

时间:2023-03-15 20:54:17 科技观察

使用独立存储开发WindowsPhone7应用程序概念是在移动智能设备中存储本地数据的方法。什么是隔离存储?隔离存储并不是一个新概念。已经在Silverlight2中使用。本质上这是一种在本地文件系统上存储数据或文件的方式。“隔离”是因为只有您的程序才能访问数据。如果您有两个应用程序并且想要在它们之间共享数据,那么最好使用诸如基于云的服务之类的东西来让您共享数据。应用程序不能与设备上的其他应用程序共享、调用或交互。在文件存储上,MonoTouch和MonoDroid可以直接写数据作为本地路径,但在WindowsPhone7上必须使用独立存储:#elifWINDOWS_PHONE使用(varappStorage=IsolatedStorageFile.GetUserStoreForApplication()){varfile=appStorage.OpenFile(_localPath,FileMode.Create);FileExtension.WriteAllText(文件,数据);}#endif}有两种方法可以在本地设置和归档存储您的数据。***是通过库中的键/值对,称为IsolatedStorageSettings。第二种是创建实际的文件和目录,称为IsolatedStorageFile。下图简要描述了这些(由MSDN提供),我将为每种方法提供一个深入的示例。有很多时候IsolatedStorageSettings,这可能是你唯一需要的存储。IsolatedStorageSettings允许您将键/值对存储在字典中(注意不需要设置),然后将它们读出。这些数据将始终保存,无论应用程序停止/启动,还是关闭等。它一直存在,直到您将其删除或用户卸载您的应用程序。要记住的一件事是,在将其添加到词典之前,您无法阅读它。在我的每个示例中,您都会看到在读取数据之前检查值是否存在的代码。以下示例是当用户在您的应用程序中收到电子邮件更新时需要保存用户设置的代码。我使用了一个复选框来允许用户进行选择,并使用一个事件将这个值保存到独立存储中。使用系统;使用System.Collections.Generic;使用System.Linq;使用System.Net;使用System.Windows;使用System.Windows.Controls;使用System.Windows.Documents;使用系统.Windows.输入;使用System.Windows.Media;使用System.Windows.Media.Animation;使用System.Windows.Shapes;使用Microsoft.Phone.Controls;使用System.IO.IsolatedStorage;namespaceDay15_IsolatedStorage{publicpartialclassMainPage:PhoneApplicationPage{IsolatedStorageSettingssettings=IsolatedStorageSettings.ApplicationSettings;//构造函数publicMainPage(){InitializeComponent();初始化设置();}privatevoidInitializeSettings(){if(settings.Contains("emailFlag")){EmailFlag.IsChecked=(bool)settings["emailFlag"];}elsesettings.Add("emailFlag",false);}privatevoidEmailFlag_Unchecked(objectsender,RoutedEventArgse){settings["emailFlag"]=false;}privatevoidEmailFlag_Checked(objectsender,RoutedEventArgse){settings["emailFlag"]=true;}}}正如你所见,这很简单。记住以下几点:读取IsolatedStorageSettings的值,如果它没有在其中创建,将抛出异常。确保你已经初始化了设置,或者始终使用Contains方法首先进行检查。您可以在设置中保存任何您喜欢的内容。在我的示例中,我保存的是一个布尔值,但您可以保存一个客户对象,或者您能想到的任何内容。记住当您读取你需要显式转换的数据,你会看到我在使用它之前将数据转换为bool值。虽然你保存了对象,但你没有保存它的类型。是否可以看到类型取决于你.设置一个值和在库中添加是一样的,“settings.Add()”语句其实不是必须的,我添加它是为了让你看到语法。就这样。IsolatedStorageSettings很简单。只使用你就可以用更少的代码保存键/值对。创建和保存文件相对复杂,但仍然很简单简单。IsolatedStorageFile使用IsolatedStorageFile是一种允许您在用户设备上存储真实文件的机制。在我的示例中,在子目录中创建一个文本文件,并读取文件的内容。我们还可以创建和删除目录、子目录和文件。看起来代码很多,其实很简单。我们创建一个新的IsolatedStorageFile对象,并使用IsolatedStorageFileStream对象将其写入驱动器。我在代码中添加了注释,以便您可以更清楚地看到发生了什么。有两个事件处理程序,一个用来保存文件,另一个读取:usingSystem.IO.IsolatedStorage;使用System.IO;privatevoidSaveButton_Click(objectsender,RoutedEventArgse){//获取应用程序的虚拟存储IsolatedStorageFilefileStorage=IsolatedStorageFile.GetUserStoreForApplication();//创建新的子目录fileStorage.CreateDirectory("textFiles");//创建一个新的StreamWriter,将文件写入指定位置。StreamWriterfileWriter=newStreamWriter(newIsolatedStorageFileStream("textFiles\\newText.txt",FileMode.OpenOrCreate,fileStorage));//将四个文本框的内容写入文件。fileWriter.WriteLine(writeText.Text);//关闭StreamWriter。fileWriter.Close();}privatevoidGetButton_Click(objectsender,RoutedEventArgse){//获取应用程序的虚拟存储IsolatedStorageFilefileStorage=IsolatedStorageFile.GetUserStoreForApplication();//创建一个新的StreamReaderStreamReaderfileReader=null;try{//从指定位置读取文件。fileReader=newStreamReader(newIsolatedStorageFileStream("textFiles\\newText.txt",FileMode.Open,fileStorage));//读取文件的内容(我们创建的唯一行).stringtextFile=fileReader.ReadLine();//将文件内容写入页面的TextBlock.viewText.Text=textFile;fileReader.Close();}catch{//如果他们先点击视图按钮,我们需要处理文件尚未创建的事实。查看文本。Text="需要先创建目录和文件。";我们都知道。现在我们在WindowsPhone7中有两种可用的存储机制。IsolatedStorageSettings和IsolatedStorageFile。我们很想听听您在程序中对这两种存储结构的创新使用,并与我们分享。【编辑推荐】.NET平台开发WindowsPhone7、iPhone和Android应用简介WindowsPhone7应用开发平台WindowsPhone7与Android对比多图详解WindowsPhone7功能升级过程WindowsPhone7开发工具发布更新包附下载地址