如何在Adobe Flex / AIR应用程序中存储用户首选项

时间:2011-06-13 20:03:16

标签: flex air

在AIR的Flex应用程序中存储用户首选项的标准方法是什么?我需要存储简单的参数,如最近打开的文件列表,窗口位置和大小等。

4 个答案:

答案 0 :(得分:7)

我最喜欢的方法是将VO与LSO(本地共享对象)结合起来。如果您有很多设置,这不会很好。优点是你得到一个强类型设置对象,因此可绑定并具有代码内省和完成

很酷的是,管理LSO只需要大约5行代码。此外,如果您想存储任何敏感数据,管理本地加密存储也非常容易。

registerClassAlias("SettingsVO",SettingsVO);  //This lets us store a typed object in LSO
var settings:SettingsVO;
var settingsSO = SharedObject.getLocal("settings");   
//Check to make sure settings exist... if not, create a new settings object
if( settingsSO.size && settingsSO.data && settingsSO.data.settings){
    settings = settingsSO.data.settings as SettingsVO;
}else{
    settings = new SettingsVO();
}

现在,如果您想保存设置,只需执行

即可
settings.someSetting = "newValue";
settingsSO.data.settings = settings;
settingsSO.flush();

此解决方案适用于任何浏览器中的BOTH AIR和Flex。较新的浏览器会在清除cookie时删除此数据,因此请注意这一点。

答案 1 :(得分:5)

我认为最灵活的方法是使用本地SQLite数据库。如果需要,它可以为您提供无限的结构化存储和加密。如果您想获得更多信息,请参阅Peter Elst's introduction

答案 2 :(得分:4)

没有“标准”方式,但是有很多方法,所有方法都归结为存储用户的首选项,然后根据一些uesr凭据在运行时加载它们,然后根据这些首选项更改应用程序。

您可以将它们存储在服务器端数据库中,例如SQL Server或MySQL;然后让flex调用一个查询数据库并返回数据的服务。

您可以将它们存储为Shared Objects,这是浏览器Cookie的Flash版本。 (我相信它们也适用于AIR应用程序)。这可能会使大量数据变得繁琐。

您可以将它们存储在XML文档中并将它们放在服务器上。从概念上讲,这与将它们存储在服务器端数据库中没有太大区别;但如果你有很多用户,可能会变得非常繁琐。

您还可以使用SQLite数据库在AIR应用程序中本地存储它们。 SQLite是Adobe AIR中使用的嵌入式数据库。

答案 3 :(得分:2)

我不打扰任何花哨的东西。只需将其存储在应用程序目录中的xml文件中即可。完成。

如果您尝试使用File.applicationDirectory存储它,Filestream会抛出错误。我只是欺骗程序......

var trickFile:File = File.applicationDirectory;
var file:File = new File(trickFile.nativePath + mySettings.xml);

空气每次都会降落。