当前,我仍然想知道何时为类实现Parcelable接口,如何确定何时使用writeTypedList/ readTypedListwriteList/ readList



// Using writeTypedList
parcel.writeTypedList(watchlistColumnTypes);

// Using writeList
parcel.writeList(watchlistColumnTypes);




// Using readTypedList
watchlistColumnTypes = new ArrayList<>();
in.readTypedList(watchlistColumnTypes, WatchlistArrayRecyclerViewAdapter.ColumnType.CREATOR);


// Using readList
watchlistColumnTypes = new ArrayList<>();
in.readList(watchlistColumnTypes, WatchlistArrayRecyclerViewAdapter.class.getClassLoader());


两者都对我有用。但是,我不确定两者之间有什么区别,我们如何选择呢?

最佳答案

我认为经验法则是,我们应尽可能使用writeTypedListreadTypedList,并在需要时使用writeListreadList

这是因为writeTypedListreadTypedList似乎具有更好的性能。

根据https://android.googlesource.com/platform/frameworks/base/+/1a008c1/core/java/android/os/Parcel.java#117


  还有一些方法可以提供更有效的工作方式
  使用Parcelables:writeTypedObject(T,int),writeTypedArray(T [],int),
  writeTypedList(List),readTypedObject(Parcelable.Creator),
  createTypedArray(Parcelable.Creator)和
  createTypedArrayList(Parcelable.Creator)。这些方法不写
  原始对象的类信息:而是
  读取函数必须知道预期的类型并传递给
  适当的Parcelable.Creator来正确构造新的
  对象并读取其数据。

关于android - 我们如何确定是使用writeTypedList/readTypedList还是writeList/readList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45267609/

10-11 00:06