【问题标题】:Why might data disappear from internal storage?为什么数据会从内部存储中消失?
【发布时间】:2013-11-26 13:19:57
【问题描述】:

在我的应用程序中,我保存了大量的序列化 ArrayList<HashMap<String, String>>s

每个哈希图中有 6 到 12 个字符串。在测试中,我最多保存长度为 200 的数组。

出现了一个问题,即这些数据在实时环境中丢失。没有报告崩溃,我自己无法用测试数据重复这个问题。当用户尝试查看由其中一些数据组成的列表时,它显示为空。该列表肯定保存在手机上并至少成功加载过一次,但之后没有成功加载。据我所知,只有当用户以这种方式存储大量数据时才会发生这种情况。

是否存在可能导致此问题的数据大小限制或其他已知问题? 正如我所说,我发现无法复制,所以这似乎是大型数组列表或不同电话类型的问题。

感谢您的帮助!

【问题讨论】:

  • 好吧,尝试将它们保存为部分并将它们连接在一起(如果需要)?或者尝试以二进制形式保存它们并即时压缩它们?我知道这不是答案,因此只是发表了评论。 ps.:大有多大? Android 在烤面包机上运行,​​而不仅仅是一流的设备。考虑到这一点。

标签: java android serialization arraylist hashmap


【解决方案1】:

如果用户使用的是旧设备,就会发生这种情况。如果应用程序使用的资源超出设备可以分配的资源,那么设备将尝试释放空间以保持应用程序运行。您可以做的最好的事情是尝试限制 Array 的大小以保持较低的内存使用率。

【讨论】:

  • 有没有更有效的方法可以存储我的数据?例如,如果我定义一个数组来保存来自特定已知位置的 hashmap 中的数据,那么在设备上会更小吗?
  • 嗯,有很多方法可以做到这一点。但这取决于您存储的意思...如果它喜欢保存数据,那么您可以查看序列化和输入/输出流。如果它是临时的,那么您可以查看缓存。
  • 嗯,它正在使用我正在做的输出流进行序列化。我想知道如果我以另一种方式保存它,是否可以让它在手机上占用更小的空间。如果手机空间不足,有没有办法让程序向我发送日志?
  • 在 try/Catch 中你可以得到 IOException。但是你为什么要做一个hashmap的arraylist???你不能只是 ArrayList>
  • 甚至只是 List 或 String[][]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多