Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Monotouch/Monodroid-在HD+;检查它们在服务器端是否已更改_C#_.net_Xamarin.ios_Mono_Xamarin.android - Fatal编程技术网

C# Monotouch/Monodroid-在HD+;检查它们在服务器端是否已更改

C# Monotouch/Monodroid-在HD+;检查它们在服务器端是否已更改,c#,.net,xamarin.ios,mono,xamarin.android,C#,.net,Xamarin.ios,Mono,Xamarin.android,为了创造更好的用户体验,我想将图像(或其他文件,如文本文件)缓存在智能手机的高清屏幕上。我将执行的一些功能: 用于定义缓存大小的选项(如果缓存太大,请删除最旧的文件,直到其低于缓存限制的90%左右) 删除X天内未被访问的文件 联机检查文件是否已更改。目前,我正在考虑在线检索文件大小,并将其与本地文件进行比较(如果更新文件,我认为只有一个小变化,即文件大小完全相同) 现在,我想知道: 是否已经有一个框架可以处理这个问题?我在谷歌上找不到任何东西。我确实发现了一些适用于iOS的东西,比如AFN

为了创造更好的用户体验,我想将图像(或其他文件,如文本文件)缓存在智能手机的高清屏幕上。我将执行的一些功能:

  • 用于定义缓存大小的选项(如果缓存太大,请删除最旧的文件,直到其低于缓存限制的90%左右)
  • 删除X天内未被访问的文件
  • 联机检查文件是否已更改。目前,我正在考虑在线检索文件大小,并将其与本地文件进行比较(如果更新文件,我认为只有一个小变化,即文件大小完全相同)
现在,我想知道:

  • 是否已经有一个框架可以处理这个问题?我在谷歌上找不到任何东西。我确实发现了一些适用于iOS的东西,比如AFNetworking,但我更喜欢跨平台代码(我也不知道AFNetworking是否能够做到这一点)
  • 我还发现了类似ASIDownloadCache的东西:在这种情况下,他们会询问服务器文件是否从X开始被修改过。我发现我可以用myHttpWebResponse.LastModified在C#中做类似的事情。这对静态文件可靠吗
  • 如何在本地文件路径上映射URL?(见下文)
为了映射本地文件(缓存中)上的URL,我正在考虑在某处定义一个“缓存”文件夹,并将文件添加到位置“cache/”+“URL”(不带http的URL)://部分)。然后检查文件是否已经缓存是非常简单的。我也可以使用字典并将其加载到内存中,但是我需要序列化它,我不确定当有很多条目时它是否会提高或降低性能

谢谢,
Matt

您可以使用SQLLite,而不是序列化对象,这将产生一组更可靠的静态方法/函数,用于跟踪您拉下来的内容、发生日期、文件路径等,以及它们在本地设备上保留的缓存首选项

组件存储上的sqllitenet将帮助您实现这一点

使用SQLLite的另一个好处是,这些助手。。假设他们使用basic System.IO,将跨两个平台。。Android和Xamarin.IOS。我想序列化可以在这两种平台上运行,您的想法也可以,但我真的认为SQLLite实现会更干净。。关于内存使用,当您确实需要执行清理时。。您用来保存“所有内容”的文件可能会变大,您必须将其加载到内存中。。而使用SQLLite,您可以查询。。找到需要修改/删除/或同步的相关内容,然后执行此操作


我不相信有什么东西可以处理你在Xamarin寻找的东西。除非您正在使用Drop Box Sync

Redth有一个缓存图像存储——类似的东西(可能是相同的代码)包含在MonoTouch.Dialog中