当一个parcelable对象通过一个intent时,它是否会更新并引用原始对象?

时间:2016-06-08 05:42:53

标签: android android-intent

假设我有一个具有pricetag属性的Product对象。我还有一个商店列表,每个商店都有自己的产品列表。

具体来说,Product p的价格为9.99美元,Store列表中的Store在其产品列表中有p。

我在Android活动中有这个商店列表,我通过意图将Product p传递给另一个活动,然后在新活动中更改该对象的价格。完成此新活动并返回旧活动后,对该对象所做的更改是否反映在商店的产品列表中?

1 个答案:

答案 0 :(得分:9)

不保留引用。包裹是:

  

可以的消息(数据和对象引用)的容器    通过IBinder发送。包裹可以包含扁平数据    在IPC的另一端(使用各种    这里用于编写特定类型的方法,或者一般的    Parcelable接口),以及对IBinder的引用    将导致另一方接收代理IBinder的对象    与包裹中的原始IBinder连接。

如果您查看任何parcelable,就会有CREATOR。这会在Parcel之外创建一个新对象。 例如:

 public static final Creator<Employee> CREATOR = new Creator<Employee>() {
    @Override
    public Employee createFromParcel(Parcel in) {
        return new Employee(in);
    }

    @Override
    public Employee[] newArray(int size) {
        return new Employee[size];
    }
};

因此,如果您希望从其他活动获取任何数据返回,请使用startActivityForResult作为Lawrance提及。