Bundle.putParcelable()是保持对对象的引用还是克隆它?

时间:2013-04-28 05:33:44

标签: android android-fragments

我在这样的片段之间发送数据:

public static final MyFragment newInstance( MyObject obj )
{
    MyFragment f = new MyFragment();

    // Get arguments passed in, if any
    Bundle args = f.getArguments();
    if (args == null) {
        args = new Bundle();
    }

    // Add parameters to the argument bundle
    args.putParcelable("obj", obj );          // clone or referenced? MyObject implements parcelable
    f.setArguments(args);

    return f;
}

我发现我传递的物体正在均匀地改变。例如,当我按下后退按钮并返回到最后一个片段时,我的对象具有我刚刚离开的片段的当前状态。

Bundle.putParcelable()不会复制对象吗?

1 个答案:

答案 0 :(得分:1)

来自Android来源:

public void putParcelable(String key, Parcelable value) {
     unparcel();
     mMap.put(key, value);
     mFdsKnown = false;
}

所以不,putParcelable没有克隆对象。