当前,我仍然想知道何时为类实现Parcelable
接口,如何确定何时使用writeTypedList/ readTypedList
或writeList/ 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());
两者都对我有用。但是,我不确定两者之间有什么区别,我们如何选择呢?
最佳答案
我认为经验法则是,我们应尽可能使用writeTypedList
或readTypedList
,并在需要时使用writeList
或readList
。
这是因为writeTypedList
或readTypedList
似乎具有更好的性能。
根据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/