别把应用的缓存都弄到 OneDrive 备份里!(UWP 开发指南)

zcxsythenew UID.911687
2016-04-04 发表

本帖最后由 zcxsythenew 于 2016-4-4 15:56 编辑

本文内容基本来自于:

概念
***链接停止解析***

操作方法
***链接停止解析***
***链接停止解析***
***链接停止解析***

以上三者均为 MSDN 的 Windows 8.x 的文档。至于为什么不用 UWP 的文档,我只能说 UWP 那个说明太不详细了,全部内容挤在一页。

一下均是孤陋寡闻的我学到一点点屁事之后忽然想装逼的结果。

[hr]

先来看看这个著名软件的错误例子。

***附件停止解析***

***附件停止解析***

(***链接停止解析*** 我错了……饶了我吧……)

这些东西还得从数据类型说起。

临时数据

[mw_shl_code=csharp,false]Windows.Storage.StorageFolder temporaryFolder = ApplicationData.Current.TemporaryFolder;[/mw_shl_code]

临时应用数据存储类似于缓存。它的文件不会漫游,也不会被备份,随时可能被删除。系统维护任务可以随时自动删除存储在此位置的数据。用户还可以使用“磁盘清理”清除临时数据存储中的文件。也就是说,这里的内容是随时会被清空的,用来存临时文件再合适不过。甚至连“清除缓存”按钮都不必提供,系统里的“存储”就可以管理这些数据。(我没有嘲讽智机社区App的意思啊。)

本地数据

这些数据会被备份
[mw_shl_code=csharp,false]Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;[/mw_shl_code]

这些数据不被备份
[mw_shl_code=csharp,false]Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalCacheSettings;
Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalCacheFolder;[/mw_shl_code]

此处存储的数据就是最传统的数据,老老实实地待在硬盘里不到处走的那种。Local 和 LocalCache 的区别在于被备份和不被备份。

漫游数据

[mw_shl_code=csharp,false]Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
Windows.Storage.StorageFolder roamingFolder = Windows.Storage.ApplicationData.Current.RoamingFolder;[/mw_shl_code]

这里的数据很活泼,没事就老爱往微软服务器跑。并且,这些数据的同步是由系统管理的,App 本身不需要进行任何操作,除了在漫游数据更改时需要响应以外。

[mw_shl_code=csharp,false]void InitHandlers()
{
Windows.Storage.ApplicationData.Current.DataChanged +=
new TypedEventHandler<ApplicationData, object>(DataChangeHandler);
}

void DataChangeHandler(Windows.Storage.ApplicationData appData, object o)
{
// TODO: Refresh your data
}[/mw_shl_code]

如果在应用中使用漫游数据,用户可轻松地在多个设备之间保持应用的应用数据同步。如果用户在多个设备上安装了你的应用,操作系统将保持应用数据同步,减少用户需要在他们的第二个设备上为你的应用所做的设置工作量。漫游还支持用户甚至在不同的设备上从他们离开的位置继续执行任务,例如撰写列表。OS 在漫游数据更新时将它复制到云,并将该数据同步到已安装应用的其他设备。

操作系统限制了每个应用可漫游的应用数据大小(ApplicationData.RoamingStorageQuota)。

操作系统会随机漫游应用数据,不会保证即时同步。对于时间关键的重要设置,可使用优先级特别高的设置单位提供更为频繁的更新。它仅限于名称为“HighPriority”的一个特定设置单位。它可以是复合体,但总大小限于 8KB。

总结

其实此文没什么实际内容(毕竟也不是什么高深的东西)。只是提醒一下,以后存储文件的时候想想要存在什么地方,别老写 LocalFolder。TemporaryFolder 可以让你免去清除缓存的操作(交给系统打理了),RoamingFolder 可以漫游数据而且不占用开发者的服务器。例如,我在手机上安装了智机社区,登录并设置好以后,在电脑上安装智机社区后已经自动登录了。(我没有嘲讽智机社区App的意思啊,毕竟IT之家也不可以。)这些看起来很炫的东西早已经可以实现了。只要改一改,LocalFolder 改 RoamingFolder 就可以。

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
SmaYee UID.1195727
2016-04-04 回复

好专业的呀{:6_234:}

suw****ing UID.1202277
2016-04-04 使用 Lumia 830 回复

赞一个,每次看备份那软件巨大无比就蛋疼

wayne556 UID.958051
2016-04-04 回复

这也是很多人偷跑流量的问题

Xray UID.25088
2016-04-04 回复

所以为什么微信的数据你备份了也没用,还原回来只是浪费时间。

iamfire UID.54453
2016-04-04 回复

呵呵..我很早就知道,我都人手道關了很多應用的自動備份

zcxsythenew UID.911687
2016-04-04 使用 Lumia 1320 回复

QuoteXray 发表于 2016-4-4 17:18
所以为什么微信的数据你备份了也没用,还原回来只是浪费时间。


微信不是 appx 应用,备份对其无效。

cnsicn UID.456373
2016-04-04 使用 Lumia Icon 回复

谢谢楼主分享,不明觉厉

Xray UID.25088
2016-04-04 使用 Lumia 950 XL 回复

Quotezcxsythenew 发表于 2016-4-4 17:31
微信不是 appx 应用,备份对其无效。


有用,聊天记录多的时候,备份轻松上G。

wyphen UID.611925
2016-04-04 回复

果然。。。我一直手动关闭他们都是正确的

zcxsythenew UID.911687
2016-04-04 使用 Lumia 1320 回复

QuoteXray 发表于 2016-4-4 18:40
有用,聊天记录多的时候,备份轻松上G。


可是备份的选项里没有微信啊!

Xray UID.25088
2016-04-04 回复

Quote***链接停止解析***
可是备份的选项里没有微信啊!


有,他叫Wechat,有时也叫Micromsg。

zcxsythenew UID.911687
2016-04-04 回复

Quote***链接停止解析***
有,他叫Wechat,有时也叫Micromsg。


好吧,我没看见有。

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报