单调相当于LoadDatalWithBaseURL&清空缓存

时间:2012-10-20 23:13:01

标签: xamarin.ios xamarin.android

我有两个问题,将一些Android代码移植到iPhone上。首先,我需要一些类似于LoadDataWithBaseURL的东西。问题是这个。在代码中,我生成一个网页。该页面使用Javascript做了一些时髦的事情,世界很好。在droid上工作正常,我生成,发送到webview的活动,然后使用LoadDataWithBaseURL。

不幸的是,在iPhone上,它第一次运行。如果我向页面添加内容并重新发送,我会在列表中显示第一个显示内容而不是其他内容。这是使用LoadHtmlString。

string contentDirectoryPath = Path.Combine (NSBundle.MainBundle.BundlePath, "Content/");
        this.BeginInvokeOnMainThread (delegate {
            this.webView.LoadHtmlString (myGeneratedPage, new NSUrl (contentDirectoryPath, true));
        });

有一个名为LoadData的monotouch方法看起来很相似,但我不清楚NSData数据是否与android app上的字符串数据相同。

一个更简单的解决方案可能是清除缓存...但是,如果我需要执行应用缓存 safari的缓存,我不知道如何解决这个问题。

我环顾四周,有一个解决方案,但它是在客观的C而不是单调。与Java到C#不同,我没有碰过obj-c,所以不知道从哪里开始。

非常感谢任何有关这些的帮助

PFJ

2 个答案:

答案 0 :(得分:3)

我一直在处理我一直在研究的iPhone Monotouch项目中的缓存。

关于更简单的解决方案,要清除应用程序缓存我执行此操作:

NSUrlCache cache = NSUrlCache.SharedCache;
cache.RemoveAllCachedResponses();

我知道SharedCache的名称似乎表明它将是一个跨应用程序缓存,但我发现清除Safari的缓存对我的应用程序的缓存没有影响。 iPhone上的Plus应用程序都是沙盒,所以我不认为你可以清除Safari的缓存。

我使用iPhone模拟器的经验表明,行NSUrlCace.SharedCache为应用程序创建了一个缓存。通过导航到Mac上的此文件夹可以看到这一点:

Library/ApplicationSupport/iPhone Simulator/6.0/<your app id>/Library/Caches/

应该有一个包含您的包名称的文件夹,其中包含一个名为“Cache.db”的文件。我认为在这个位置存在这个文件还支持它是应用程序缓存的事实,所以你应该安全地清除它等。

由于MonoTouch网站上没有太多关于NSUrlCache的文档以及它们如何实现它们的方法,因此这是我能够解决的最佳方法。

希望您能找到一些方法来使用缓存清除来解决您的问题。

答案 1 :(得分:0)

LoadData的参数是包含HTML内容的NSData。