Java 在saveInstanceState捆绑包中存储大数据结构
我已经读到,如果我们想在活动重新启动旋转设备时保存任何数据,我们必须将所有数据存储在Bundle的saveInstanceState中 但是,若我们想将大数据结构保存在捆绑包中,它会冻结系统并增加内存使用 例如: 我有一个50000000个元素的HashMap。读数来自SD卡。所以,如果我将HashMap保存到Bundle,它会在很长一段时间内冻结设备的旋转Java 在saveInstanceState捆绑包中存储大数据结构,java,android,optimization,Java,Android,Optimization,我已经读到,如果我们想在活动重新启动旋转设备时保存任何数据,我们必须将所有数据存储在Bundle的saveInstanceState中 但是,若我们想将大数据结构保存在捆绑包中,它会冻结系统并增加内存使用 例如: 我有一个50000000个元素的HashMap。读数来自SD卡。所以,如果我将HashMap保存到Bundle,它会在很长一段时间内冻结设备的旋转 有没有一种方法,我们可以保存数据而不必捆绑存储?例如,将指针保存到HashMap?您绝对不应该这样做。您应该手动处理方向更改,或者将这些数
有没有一种方法,我们可以保存数据而不必捆绑存储?例如,将指针保存到HashMap?您绝对不应该这样做。您应该手动处理方向更改,或者将这些数据保留在活动之外,就像在服务中一样。首先,在Java中没有指针,只有引用。不过,惟一的oneHashMap不是问题,问题在于保存它包含的50000000个元素。如果您确实想这样做,您可以优化文件的读/写,请选中 但你不应该优化这个。正如Donald Knuth所说: 过早优化是万恶之源
您应该编写处理屏幕旋转的代码,以便在旋转过程中不必保存和加载如此大的数据。有趣。如果每个键都是1字节,并且它们都映射为null,那么在大多数设备上这已经是OutOfMemory错误。我认为数据库是存放这些数据的好地方。谢谢,我不考虑服务,但它对我的应用程序非常有用。