我已经读过,如果我们想在活动重启时保存任何数据(旋转设备),我们必须将所有数据存储在Bundle的saveInstanceState()
中。
但是,如果我们想要在bundle中保存大数据结构 - 它会冻结系统并增加内存使用量。
例如:
我有一个HashMap
50,000,000个元素。读数来自SD卡。因此,如果我将HashMap
保存到Bundle
- 它会冻结设备的旋转一段时间。
有没有办法可以在不存储Bundle
的情况下保存数据? (例如,将指针保存到HashMap
?)
答案 0 :(得分:0)
你绝对不应该这样做。您应手动处理方向更改或将此数据保留在活动之外,例如在服务中。
答案 1 :(得分:0)
首先,在Java中没有指针,只有引用。但是唯一一个HashMap
不是问题,问题在于保存它包含的50,000,000个元素。如果你真的想这样做,你可以优化文件的读/写,检查this。
但你不应该优化它。正如唐纳德克努特所说:
过早优化是万恶之源。
您应该编写处理屏幕旋转,以便在旋转期间不必保存和加载这么大的数据。