在Android设备上存储大型应用程序数据的位置?

时间:2010-11-23 08:36:57

标签: android security object store

我目前正面临一个问题,我应该在Android设备上存储我的对象结构。

用例:我开始调用applicationserver(在AsyncTask的帮助下),从服务器获取一个众所周知的响应(xml-response),解析数据并最终将其转换为我的对象结构(高度复杂的类图,类之间有很多关联)。到目前为止它正在工作,感谢伟大的XMLPullParser;) 我想知道在我的活动之间存储(当然还有)获取数据的位置......我已经知道我可以使用sqlite,但我没有or-mapper(比如j2ee环境中的hibernate)。我也不允许将这些敏感数据存储在设备上(在sqlite或文件系统中),所以我的第一种方法是将这些数据存储在一个单例中(cource保存在内存中......)。但是当系统进入低内存时会发生什么,android可以“破坏”存储在我的单例中的数据吗?我已经阅读了关于扩展android.app.Application类的内容......那么在Android设备上安全存储对象数据(从“webservice”调用)的最佳方法是什么?

BTW:Android开发很酷!我们目前正在将Windows Mobile 6.5应用程序移植到Android和iPhone上,我的同事(负责iPhone-dev)一直在抱怨^^

1 个答案:

答案 0 :(得分:2)

关于OR映射器,前几天我遇到了OrmLite。它是Java的一般ORM工具,但它也有一些特殊的修改,使其适用于Android。我还没来得及自己测试它,但看起来很有希望:))

至于在手机上存储敏感数据,你真的没有选择只将它存储在内存中(使用你建议的某种单例)。一旦您的应用程序进入后台,它就可以立即被杀死,因此您 以某种方式保留您想要保留的数据。话虽这么说,如果你将数据保存到Internal Storage,这将不适用于手机上的任何其他应用程序(假设手机没有root,因为如果根植,这很容易解决)。我确实认为使用SQLite存储的数据也是如此,但我不是100%肯定,所以我不保证。

但基本上,如果您确定您的应用只能在非root设备上运行,那么将数据保存到内部存储应该非常安全。如果这还不够好,那就有javax.crypto包,但我从来没有用过,所以我真的不能说出来。