1

我读过,如果我们想在活动重新启动(旋转设备)时保存任何数据,我们必须将所有数据存储在 Bundle 中saveInstanceState()

但是,如果我们想将大数据结构保存在捆绑包中 - 它会冻结系统并增加内存使用量。

例如:
我有一个HashMap50,000,000 个元素。读数来自 SD 卡。所以,如果我保存HashMapBundle- 它会在很长一段时间内冻结设备的旋转。

有没有一种方法,我们可以在不存储的情况下保存数据Bundle?(例如保存指针HashMap?)

4

2 回答 2

0

你绝对不应该这样做。您应该手动处理方向更改或将此数据保留在您的活动之外,例如在服务中。

于 2013-01-16T22:54:45.613 回答
0

首先,在Java中没有指针,只有引用。唯一的一个HashMap不是问题,问题在于保存它包含的 50,000,000 个元素。如果你真的想这样做,你可以优化文件的读/写,检查这个

但是你不应该优化它。正如唐纳德·高德纳 (Donald Knuth) 所说:

过早的优化是万恶之源。

您应该编写处理屏幕旋转的代码,而不必在旋转期间保存和加载如此大的数据。

于 2013-01-16T23:01:29.753 回答