Flex移动应用程序中的脱机缓存

时间:2014-05-07 11:21:04

标签: .net web-services flex caching mobile

我正在Flex移动中创建一个邮件应用程序。如何在Flex移动应用程序中实现脱机缓存功能?

我需要对用户收件箱中的邮件进行离线缓存,因此如果用户没有连接,他们就可以读取之前连接时缓存的旧/旧电子邮件。

这可能来自Flex方面吗?如果是这样,怎么样?如果没有,那么什么是解决方案或者我能为此做些什么。

在服务器端,我使用.net获取数据。

1 个答案:

答案 0 :(得分:2)

一种可能的(简单)解决方案是使用SharedObject

public void cacheIncomingMail(message:EmailMessage):void {
  var so:SharedObject = SharedObject.getLocal("mobileMail");
  var cachedMessages:Array = so.data.messages;
  //Decide whether to remove anything from the array
  cachedMessages.push(message);
  so.data.messages = cachedMessages;
}

请注意,此解决方案可以将大量数据转储到SharedObject中; Adobe's documentation建议您使用SharedObject来获取有限数量的数据"

另一种方法是使用File class

public void cacheIncomingMail(message:EmailMessage):void {
  var dataFolder:File = File.applicationStorageDirectory;
  var desiredFilename:String = makeFilenameFromEmail(message);
  var mailStorageFile:File = dataFolder.resolvePath(desiredFilename);
  var fileStream:FileStream = new FileStream();
  fileStream.open(file, FileMode.WRITE);
  fileStream.writeUTF(message.toXML());
  fileStream.close();
}