gpt4 book ai didi

Android:保存存储在应用程序单例类中的数据的最佳方式

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:05 26 4
gpt4 key购买 nike

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

我有一个安静的大应用程序,可以在 Activity 之间共享大量数据。所以大部分都存储在Application Singleton上。

一切都很好.. util 应用程序在内存不足时被操作系统杀死......然后当它回来时它试图恢复 Activity 但没有成功,因为应用程序之前缺少必要的数据。

由于缺乏一种非常受欢迎(和需要)的方法来根据您的经验在应用程序上保存数据,最好的方法是什么?

除了“普通”字符串、 bool 值等,我可以保存一些东西吗,比如位图?

我已经看过这个How to declare global variables in Android?但问题不在于在这种情况下重要的是什么,当应用程序因内存不足而被杀死时如何保存数据......

最佳答案

与许多问题一样,没有简单的答案。保存数据的方法有很多种,每种方法各有优缺点。 “最佳”方法取决于您的特定需求。您在这里拥有所有选择:http://developer.android.com/guide/topics/data/data-storage.html

  • 对于一些小的位图,您可以对它们进行编码并将它们存储在 SharedPreferences 中。 .
  • 对于更多更大的图像,您有两种选择
    1. database 中的 blob 列
    2. 将它们作为文件存储在您的 internal storage 中,并将链接保留在您的首选项中。

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

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

文件与数据库 方法还取决于您计划访问这些对象的次数。如果它们只会被读取一两次然后消失,那么我会选择文件而不是数据库及其游标的麻烦。如果有很多读取,我会选择数据库,也许您需要使用查询进行更快的搜索。

另请查看此帖子:http://android-developers.blogspot.in/2009/02/faster-screen-orientation-change.html用于特定于 Activity 的选项。

关于Android:保存存储在应用程序单例类中的数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6063550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com