Parcelable,newArray 是用来做什么的?

10

我正在实现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();
     }
 }  

所以,我的问题是:这个方法是用来做什么的?什么时候会被调用?
除了在这个方法中返回 new MyParcelable [size]; 之外,还有什么别的意义吗?


1
有同样的问题..向好奇的头脑干杯 :) - Sam Berg
3个回答

9

这是一个函数,在尝试反序列化一个Parcelable对象数组时会被调用,对于每个单独的对象,都会调用createFromParcel方法。


5
它的作用是在不涉及所有通用类型的情况下准备输入数组。仅此而已。
仅返回标准的return new MyParcelable[size];即可。
你永远不会自己调用它,但是通过调用Bundle.getParcelableArray()之类的方法,最终会间接调用该方法。

0

newArray 负责创建一个适当大小的我们类型的数组


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接