1

我碰巧知道如果我的实现Parcelable的类Info有空的 writeToParcel()方法,Bundle.putParcelableArrayList()Bundle.getParcelableArrayList()方法仍然适用于ArrayList< Info>

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!
    }
}

那么问题是为什么?当我真的应该按照 API 文档和书籍的指示实现writeToParcel方法时?

4

1 回答 1

1

Android Bundle 类不遵循 IPC 封送期间遵循的相同协议。通过反射,实现 Bundle 的类将简单地将 Parcelable 对象读写到它自己的内部映射中。因此,将使用您在 Parcelable 派生类中定义的任何属性。

相反,如果您使用 IPC 编组协议 - 例如将 Info 对象从一个活动传递到另一个活动 - 这就是您需要实现特定的 writeToParcelable 方法和适当的构造函数的时候。

于 2013-10-02T09:26:38.893 回答