我正在Flex移动中创建一个邮件应用程序。如何在Flex移动应用程序中实现脱机缓存功能?
我需要对用户收件箱中的邮件进行离线缓存,因此如果用户没有连接,他们就可以读取之前连接时缓存的旧/旧电子邮件。
这可能来自Flex方面吗?如果是这样,怎么样?如果没有,那么什么是解决方案或者我能为此做些什么。
在服务器端,我使用.net获取数据。
答案 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();
}