保存 Android 应用程序的应用程序类(单例)中存储的数据的最佳方法是什么?
我有一个安静的大应用程序,可以在活动之间共享大量数据。所以大部分都存储在Application Singleton上。
一切都很好.. util应用程序被操作系统在内存不足时杀死...然后当它回来时,它尝试恢复活动但没有成功,因为应用程序之前缺乏必要的数据。
由于缺乏一种非常受赞赏(和需要)的方法来根据您的经验在应用程序上保存数据,最好的方法是什么?
除了“普通”字符串、布尔值等之外,我还可以保存诸如位图之类的东西吗?
我已经看过这个了Android中如何声明全局变量?但问题并不集中在这种情况下重要的是什么,当应用程序因内存不足而被终止时如何保存数据......
与许多问题一样,没有简单的答案。保存数据的方法有很多种,每种方法都有优点和缺点。“最佳”方法将取决于您的特定需求。您在这里拥有所有选择:http://developer.android.com/guide/topics/data/data-storage.html
- 对于一些小的位图,您可以对它们进行编码并将它们存储在共享首选项.
- For more and bigger images, you have two options
- 中的 Blob 列database
- 将它们作为文件存储在您的内部存储器,并将链接保留在您的首选项中。
共享首选项存储字符串,因此可以存储任何字符串,包括任何序列化/编码对象。根据这个帖子,SharedPreferences 中的序列化字符串没有硬编码的大小限制,而是基于字符串大小限制。尽管如此,这另一篇文章指出整个 SharedPreferences 对象被编写为单个 xml 文件,因此您应该尝试将其大小保持在最小。
JSON 对象(或按照 katit 建议使用 GSON)是一个很好的轻量级选项,但我采取的方法是将它们保存到内部数据存储(除非数据非常大,即很多兆字节,并且您更喜欢外部存储)并仅将链接保留在 SharedPreferences 中。我不知道你的对象是什么样的,但如果它们可以简化为一堆更简单的组件,你可以考虑为它们建立一个数据库(即每个对象一行,每个字段一列,可能包括一些斑点) 。
The 文件与数据库方法还取决于您计划访问这些对象的次数。如果它们只会被读取一两次然后就消失,那么我会选择文件而不是数据库及其游标的麻烦。如果有很多读取,并且也许您需要使用查询进行更快的搜索,我会选择数据库。
另请查看这篇文章:http://android-developers.blogspot.in/2009/02/faster-screen-orientation-change.html对于特定于活动的选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)