我一直在将 Parcelable
写入 Parcel
中,没有关注方法签名中的参数 flags 字段,这一切都运行良好,但现在我遇到了一个实现,无法再忽略它们:
public static <K extends Parcelable, V extends Parcelable> void write(Parcel dest,
Map<K, V> map, int flags) {
if (map == null) {
dest.writeInt(-1);
} else {
Set<Map.Entry<K, V>> entrySet = map.entrySet();
dest.writeInt(entrySet.size());
for (Map.Entry<K, V> entry : entrySet) {
dest.writeParcelable(entry.getKey(), flags);
dest.writeParcelable(entry.getValue(), flags);
}
}
}
我写了一个实用程序,用于将Map
转换为Parcelable
,我想知道在编写时是否应该将标志原样传递给Key和Value,还是应该对于Key传递0,对于Value传递flags
。我阅读了文档中关于标志的定义:PARCELABLE_WRITE_RETURN_VALUE
自API等级1起添加
int PARCELABLE_WRITE_RETURN_VALUE
标志用于在 writeToParcel(Parcel, int)
中使用:要写入的对象是函数返回的结果,例如 "Parcelable someFunction()"、"void someFunction(out Parcelable)" 或者 "void someFunction(inout Parcelable)"。一些实现可能希望在此时释放资源。
常量值:1 (0x00000001)
但我无法理解它。有人能简单地解释一下什么是 Parcelable
标志以及应该如何使用吗?
void write
是你的方法,entry.getKey()
定义在 Map 接口中,我不明白你的意思。 - OneCricketeer