我碰巧知道如果实现 Parcelable 的类 Info 具有空的 writeToParcel()方法, Bundle.putParcelableArrayList( )和 Bundle.getParcelableArrayList()方法仍适用于 ArrayList<信息>
public class Info implements Parcelable
{
public int row;
public int column;
public int describeContents()
{
return 0;
}
public void writeToParcel(Parcel out, int flags)
{
// Left empty!
}
}
所以问题是为什么?当我真的应该实现 writeToParcel 方法作为API文档和书籍指示?
答案 0 :(得分:1)
Android Bundle类不遵循IPC编组期间遵循的相同协议。通过反思,一个实现Bundle的类将简单地读取&将Parcelable对象写入其自己的内部映射。因此,将使用您在Parcelable派生类中定义的任何属性。
相反,如果您正在使用IPC编组协议 - 例如将Info对象从一个活动传递到另一个活动 - 这是您需要实现特定的writeToParcelable方法和相应的构造函数。