Parcelable,newArray是什么?

时间:2014-02-26 09:58:32

标签: android parcelable parcel

我正在实现Parcelable,以便在Intent中传输一些简单的数据 但是,Parcelable界面中有一种我完全不理解的方法:newArray() 它没有任何相关的文件和当我包裹/去除我的对象时,甚至在我的代码中都没有调用它。

示例Parcelable实现:

public class MyParcelable implements Parcelable {
 private int mData;

 public int describeContents() {
     return 0;
     }

 public void writeToParcel(Parcel out, int flags) {
     out.writeInt(mData);
     }

 public static final Parcelable.Creator<MyParcelable> CREATOR
         = new Parcelable.Creator<MyParcelable>() {
     public MyParcelable createFromParcel(Parcel in) {
         return new MyParcelable(in);
         }

     public MyParcelable[] newArray(int size) {
         return new MyParcelable[size];
         }
     };

 private MyParcelable(Parcel in) {
     mData = in.readInt();
     }
 }  

所以,我的问题是:这个方法是什么?什么时候打电话? 在该方法中,除了return new MyParcelable[size];之外还有什么意义吗?

3 个答案:

答案 0 :(得分:8)

当您尝试反序列化Parcelable个对象数组并且调用每个单个对象createFromParcel时,这是一个要调用的函数。

答案 1 :(得分:5)

这是准备没有所有泛型的东西的类型数组。就是这样。
只返回标准return new MyParcelable[size];就好了。

这是正常的,你永远不会自己打电话。但是,通过调用类似Bundle.getParcelableArray()的内容,您可以间接地使用此方法。

答案 2 :(得分:0)

newArray负责创建大小合适的我们的数组