设为首页 收藏本站
查看: 781|回复: 0

快速构建Windows 8风格应用27-漫游应用数据

[复制链接]

尚未签到

发表于 2015-5-23 11:47:33 | 显示全部楼层 |阅读模式
DSC0000.jpg
  本篇博文主要介绍漫游应用数据概览、如何构建漫游应用数据、构建漫游应用数据最佳实践。
  

一、漫游应用数据概览
  1.若应用当中使用了漫游应用数据,用户可以很轻松的在不同的设备间保持应用数据的同步。
  2.Windows会将更新的漫游数据同步到云端,并将数据更新到其他安装此应用的设备上。
  3.Windows 限制了每个应用可漫游的应用数据大小。若我们的应用达到漫游数据大小的限制,在应用的总漫游数据再次少于该限制之前,不会将应用的任何数据更新到云端,因此最好的做法是仅为用户首选项、链接和小型数据文件使用漫游数据。
  4.只要用户在所需的时间间隔内从某个设备访问应用的漫游数据,这些数据将存在云端,若用户不在比此时间间隔更长的时间内运行应用,漫游数据将从云端删除,若用户卸载应用,漫游数据不会自动从云中删除,将会保留,若用户在该时间间隔内重新安装该应用,会从云端同步漫游数据。注意:时间间隔指定为 30 天。
  5.Windows会随机漫游应用数据,并不保证即时同步。若用户脱机或位于高延迟网络中,则漫游可能会明显延迟。那么对于时间关键的重要设置,可使用优先级特别高的设置单位提供更为频繁的更新。它仅限于名称为“HighPriority”的一个特定设置单位。它可以是复合体,但总大小限于8KB。此限值不是强制性的,当超过此限值时,设置单位或设置复合体将被视为常规设置单位或复合体。
DSC0001.png

二、如何构建漫游应用数据
  1.注册漫游数据发生更改的事件,该事件为DataChanged事件。



void InitHandlers()
{
   Windows.Storage.ApplicationData.Current.DataChanged +=
      new TypedEventHandler(DataChangeHandler);
}

void DataChangeHandler(Windows.Storage.ApplicationData appData, object o)
{
   // 更新数据
}
  2.获取应用的设置和文件容器。通常我们使用ApplicationData.RoamingSettings属性可以获取设置和ApplicationData.RoamingFolder属性可以获取文件。



Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
Windows.Storage.ApplicationDataContainer roamingFolder = Windows.Storage.ApplicationData.Current.RoamingFolder;
  3.将数据写入设置。
  使用 ApplicationDataContainer.Values属性进行简单的数据写入。



roamingSettings.Values["exampleSetting"] = "Hello World";
  使用ApplicationDataCompositeValue对象进行复合设置。



Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

roamingSettings.Values["exampleCompositeSetting"] = composite;

  使用ApplicationDataContainer.CreateContainer 方法可创建设置容器。



Windows.Storage.ApplicationDataContainer container =
   roamingSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always);

if (roamingSettings.Containers.ContainsKey("exampleContainer"))
{
   roamingSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello World";
}
  4.从设置中获取数据。
  获取简单的数据。



Object value = roamingSettings.Values["exampleSetting"];
  获取复合设置中的数据。



Windows.Storage.ApplicationDataCompositeValue composite =
   (Windows.Storage.ApplicationDataCompositeValue)roamingSettings.Values["exampleCompositeSetting"];

if (composite == null)
{
   // No data
}
else
{
   // Access data in composite["intVal"] and composite["strVal"]
}
  获取容器中的数据。



bool hasContainer = roamingSettings.Containers.ContainsKey("exampleContainer");
bool hasSetting = false;

if (hasContainer)
{
   hasSetting = roamingSettings.Containers["exampleContainer"].Values.ContainsKey("exampleSetting");
}
  5.从设置中删除数据。
  使用ApplicationDataContainerSettings.Remove方法删除设置中数据。



roamingSettings.Values.Remove("exampleSetting");
  6.将数据写入文件。
  使用Windows.Storage.StorageFolder.CreateFileAsyncWindows.Storage.FileIO.WriteTextAsync可在漫游应用数据存储中创建和更新文件。



async void WriteTimestamp()
{
   Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter =
       new Windows.Globalization.DatetimeFormatting.DateTimeFormatter("longtime");

   StorageFile sampleFile = await roamingFolder.CreateFileAsync("dataFile.txt",
       CreateCollisionOption.ReplaceExisting);
   await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTime.Now));
}
  7.从文件中获取数据。
  使用Windows.Storage.StorageFolder.GetFileAsyncWindows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.Storage.FileIO.ReadTextAsync可在漫游应用数据存储中打开和读取文件。



async void ReadTimestamp()
{
   try
   {
      StorageFile sampleFile = await roamingFolder.GetFileAsync("dataFile.txt");
      String timestamp = await FileIO.ReadTextAsync(sampleFile);
      // Data is contained in timestamp
   }
   catch (Exception)
   {
      // Timestamp not found
   }
}
  

三、构建漫游应用数据最佳实践
  应做事项:
  1.将漫游用于首选项和自定义项。用户总会选择在每台设备上设置的所有应用漫游数据,例如用户首选项,可包括:最喜爱的球队、背景颜色自定义等等。
  2.使用漫游数据允许用户跨设备继续执行任务。例如:阅读文章时的上一次阅读位置、游戏中级别或分数信息等等。
  禁止事项:
  1.请勿将漫游用于属于本地设备的信息。
  例如,PC 中本地文件资源的路径名称。此信息不应纳入漫游应用数据,且必须保留作为本地设备信息。不过,你仍可决定漫游本地信息,但前提是万一此信息在另一设备上无效,应用应能够完美恢复此信息。
  2.请勿使用漫游移动大的数据集
  每个应用可以漫游的应用数据的大小存在限制。若应用达到此限制上限,则数据无法漫游,直到应用的总漫游应用数据再次小于该限制。因此最好的做法是将漫游局限于用户首选项、链接和小数据文件。应用设计过程中,必须考虑如何为较大数据设置一个限制以免超过此限值,这一点至关重要。
  例如,如果每保存一个游戏状态需要 10KB,则应用可能仅允许用户最多储存 10 个游戏。
  3.请勿将漫游用于即时同步,或用于更改频繁的信息
  Windows会随机漫游应用数据,不会保证即时同步。
  若用户脱机或位于高延迟网络中,则漫游可能会明显延迟,所以请不要构建需要即时同步的UI。
  如果应用频繁更改信息(例如,歌曲或电影中的最新位置),则请不要将漫游应用数据用于此数据,而选取较不频繁但仍可提供良好用户体验的表示。
  例如,当前播放的歌曲、当前播放的电影章节等。
  对于时间关键的重要设置,可使用优先级特别高的设置单位提供更为频繁的更新。
  
  更多关于漫游应用数据的介绍可参考:
  1.快速入门:漫游应用程序数据;
  2.漫游应用数据指南;
  3.管理应用程序数据;
  MSDN中提供漫游应用数据相关示例代码:Application data sample。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-69805-1-1.html 上篇帖子: Windows 8 系列(十):关于AppBar持久显示的相关问题 下篇帖子: windows 8 开发 Application Data
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表