我正在实现Parcelable,以便在整个Intent中传输一些简单的数据。
但是,Parcelable接口(interface)中有一种我根本不了解的方法:newArray()
它没有任何相关文档,并且在我打包/取消打包对象时甚至没有在我的代码中调用它。

可打包实现示例:

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];以外,还有什么其他意义吗?

最佳答案

当您尝试反序列化Parcelable对象的数组并为每个单个对象调用createFromParcel时,将调用此函数。

10-08 13:40