I have been writing Parcelable
s to Parcel
without any focus on flags field, which is a parameter in the method signature and it has worked fine but I have run into an implementation where I can no longer ignore them:
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);
}
}
}
This is a Map
to/from Parcelable
utility I have written and I am wondering if the flags should be passed as it is to both Key as well as the Value while writing them or should pass 0 for Key and flags
for Value.
I read the definition of what a flag is in the docs:
PARCELABLE_WRITE_RETURN_VALUE
added in API level 1
int PARCELABLE_WRITE_RETURN_VALUE
Flag for use with
writeToParcel(Parcel, int)
: the object being written is a return value, that is the result of a function such as "Parcelable someFunction()", "void someFunction(out Parcelable)", or "void someFunction(inout Parcelable)". Some implementations may want to release resources at this point.Constant Value: 1 (0x00000001)
But am unable to comprehend it. Could anyone explain in simple terms what a Parcelable
flag is and how it should be used?
void write
is your method,entry.getKey()
is defined in the Map interface, I don't understand your point – Parks