Android:保存Application Singleton Class中存储数据的最佳方法

net*_*ein 9 android application-singleton

保存Android应用程序的应用程序类(单例)中存储的数据的最佳方法是什么?

我有一个安静的大应用程序,在活动之间共享大量数据.因此大部分都存储在Application Singleton上.

这一切都很有效.. util应用程序被内存不足的操作系统杀死...然后当它返回时,它会尝试恢复活动而没有成功,因为缺少必须在Application上的数据.

由于缺乏一种非常欣赏(和需要)的方法来根据您的经验在应用程序上保存数据,哪种方法最好?

我可以保存一些东西,除了"正常"字符串,布尔值等,比如Bitmaps?

我已经看到了如何在Android中声明全局变量?但问题并不是关注在这种情况下重要的是什么,如何在应用程序因内存不足而被杀死时保存数据......

Ale*_*dam 17

与许多问题一样,没有简单的答案.有许多方法可以保存数据,每种方法都有优点和缺点."最佳"方法取决于您的特定需求.您可以在此处选择所有选项:http://developer.android.com/guide/topics/data/data-storage.html

SharedPreferences存储字符串,因此可以存储任何字符串,包括任何序列化/编码对象.根据这篇文章,SharedPreferences中的序列化字符串没有硬编码大小限制,但是基于字符串大小限制.尽管如此,这篇文章指出整个SharedPreferences对象是作为单个xml文件编写的,因此您应该尽量将其大小保持在最小值.

JSON对象(或使用katit建议的GSON)是一个很好的轻量级选项,但我采取的方法是将它们保存到内部数据存储(除非数据真的很大,即数兆字节,你更喜欢外部存储)并仅在SharedPreferences中保留链接.我不知道你的对象是什么样的,但是如果它们可以简化为一堆更简单的组件,你可以为它们考虑一个数据库(即每个对象一行,每个字段一列,包括一些blob) .

文件VS数据库的做法也将取决于有多少次你打算访问这些对象.如果它们只被阅读一两次然后消失,那么我会选择文件而不是数据库及其游标的麻烦.如果有很多读取,我会选择一个数据库,也许你需要使用查询更快的搜索.

另请查看此帖子:http://android-developers.blogspot.in/2009/02/faster-screen-orientation-change.html以获取特定于活动的选项.