Intent 和 getSerializableExtra 值 return

Intent and getSerializableExtra value return

onCreate 中,我从 activity

itemsList 中获得了一个额外的可序列化
itemsList = (ArrayList<HashMap<String, String>>) intent
  .getSerializableExtra("sliding_menu_content");

然后在 activity 中我将一些其他地图元素添加到 itemsList 数组。 令我惊讶的是,更改设备的方向后,getSerializableExtra returns itemsList 的更新状态包括所有地图元素添加。怎么可能?

编辑:
我的电话 activity 像这样

ArrayList<HashMap<String, String>> startingList = 
   new ArrayList<HashMap<String, String>>();
i.putExtra("sliding_menu_content", startingList);
startActivity(i);

据我了解传递参数,这是一个评估假设,当我通过 getSerializableExtra 分配 itemsList 时,我得到的不是 其值的副本 但是我得到了一个 指针 的副本到调用 activity 传递的原始对象(即 startingList),然后它的每个更新都是更新原始值。

您应该知道 Intent.putExtra() 和 Intent.getSerializable() 的工作原理。 Intent使用Bundle来保存参数,如果不是进程间intent内部Bundle只是将原始对象保存在数据映射中。 , 对象将不被复制(做拆包和包裹的事情),所以你得到的仍然是原始对象。