在onCreate
我获得了一个额外的序列化,从意图到我活动的itemsList
itemsList = (ArrayList<HashMap<String, String>>) intent
.getSerializableExtra("sliding_menu_content");
然后在活动中我将一些其他地图元素添加到itemsList
数组中。
令我惊讶的是,更改设备的方向,getSerializableExtra
将返回itemsList
的更新状态,包括所有地图元素添加。怎么可能?
修改
我的通话活动会增加这样的额外内容
ArrayList<HashMap<String, String>> startingList =
new ArrayList<HashMap<String, String>>();
i.putExtra("sliding_menu_content", startingList);
startActivity(i);
因为我理解传递参数,这是一个评估的假设,当我通过itemsList
分配getSerializableExtra
时,我得不到<值>的值的副本但我得到了< strong>指针的副本到调用活动传递的原始对象(即startingList
),然后每次更新都是对原始值的更新。
答案 0 :(得分:1)
你应该知道Intent.putExtra()和Intent.getSerializable()是如何工作的。 Intent使用Bundle来保存参数,如果它不是进程间意图内部Bundle只是将原始对象保存在数据映射中。 ,对象将不被复制(做无组件和包裹的东西),所以你得到的仍然是原始对象。