diff options
Diffstat (limited to 'core/java/android/os/Parcel.java')
-rw-r--r-- | core/java/android/os/Parcel.java | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java index 8ad600c..bb6357e 100644 --- a/core/java/android/os/Parcel.java +++ b/core/java/android/os/Parcel.java @@ -437,6 +437,12 @@ public final class Parcel { /** * Write a FileDescriptor into the parcel at the current dataPosition(), * growing dataCapacity() if needed. + * + * <p class="caution">The file descriptor will not be closed, which may + * result in file descriptor leaks when objects are returned from Binder + * calls. Use {@link ParcelFileDescriptor#writeToParcel} instead, which + * accepts contextual flags and will close the original file descriptor + * if {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE} is set.</p> */ public final native void writeFileDescriptor(FileDescriptor val); @@ -1000,7 +1006,7 @@ public final class Parcel { /** * Flatten a generic object in to a parcel. The given Object value may * currently be one of the following types: - * + * * <ul> * <li> null * <li> String @@ -1023,7 +1029,7 @@ public final class Parcel { * <li> Parcelable[] * <li> CharSequence (as supported by {@link TextUtils#writeToParcel}). * <li> List (as supported by {@link #writeList}). - * <li> {@link SparseArray} (as supported by {@link #writeSparseArray}). + * <li> {@link SparseArray} (as supported by {@link #writeSparseArray(SparseArray)}). * <li> {@link IBinder} * <li> Any object that implements Serializable (but see * {@link #writeSerializable} for caveats). Note that all of the @@ -1032,6 +1038,13 @@ public final class Parcel { * approach is much less efficient and should be avoided whenever * possible. * </ul> + * + * <p class="caution">{@link Parcelable} objects are written with + * {@link Parcelable#writeToParcel} using contextual flags of 0. When + * serializing objects containing {@link ParcelFileDescriptor}s, + * this may result in file descriptor leaks when they are returned from + * Binder calls (where {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE} + * should be used).</p> */ public final void writeValue(Object v) { if (v == null) { @@ -1120,7 +1133,7 @@ public final class Parcel { /** * Flatten the name of the class of the Parcelable and its contents * into the parcel. - * + * * @param p The Parcelable object to be written. * @param parcelableFlags Contextual flags as per * {@link Parcelable#writeToParcel(Parcel, int) Parcelable.writeToParcel()}. |