当调用putExtra()时,内存方式会发生什么?

Lib*_*hos 3 memory android memory-management android-intent

在我的android应用程序中,我有一个大型的ArrayList对象(超过100个),并且我使用putExtra(key,value)函数通过意图将此ArrayList从activity传递给activity.当我做这样的事情时,内存明智地发生了什么,ArrayList是否被复制,所以它现在占用了它所需的内存的两倍?或者jst被引用,所以空间保持不变?

Boj*_*man 6

当你通过你的时候ArrayList,你正在序列化/分配它.这称为编组.另一方面,您正在阅读这些包裹并进行解组.它的作用基本上是将您转换ArrayList为您在另一端阅读的流并制作原始的COPY.

  • 值得注意的是,在需要编组之前不会发生 - 调用putExtra在Bundle序列化之前不会复制 (2认同)