From 9066cfe9886ac131c34d59ed0e2d287b0e3c0087 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Tue, 3 Mar 2009 19:31:44 -0800 Subject: auto import from //depot/cupcake/@135843 --- core/java/android/os/Parcelable.java | 112 +++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 core/java/android/os/Parcelable.java (limited to 'core/java/android/os/Parcelable.java') diff --git a/core/java/android/os/Parcelable.java b/core/java/android/os/Parcelable.java new file mode 100644 index 0000000..aee1e0b --- /dev/null +++ b/core/java/android/os/Parcelable.java @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +/** + * Interface for classes whose instances can be written to + * and restored from a {@link Parcel}. Classes implementing the Parcelable + * interface must also have a static field called CREATOR, which + * is an object implementing the {@link Parcelable.Creator Parcelable.Creator} + * interface. + * + *

A typical implementation of Parcelable is:

+ * + *
+ * public class MyParcelable implements Parcelable {
+ *     private int mData;
+ *     
+ *     public void writeToParcel(Parcel out, int flags) {
+ *         out.writeInt(mData);
+ *     }
+ *
+ *     public static final Parcelable.Creator CREATOR
+ *             = new Parcelable.Creator() {
+ *         public MyParcelable createFromParcel(Parcel in) {
+ *             return new MyParcelable(in);
+ *         }
+ *
+ *         public MyParcelable[] newArray(int size) {
+ *             return new MyParcelable[size];
+ *         }
+ *     }
+ *     
+ *     private MyParcelable(Parcel in) {
+ *         mData = in.readInt();
+ *     }
+ * }
+ */ +public interface Parcelable { + /** + * Flag for use with {@link #writeToParcel}: 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. + */ + public static final int PARCELABLE_WRITE_RETURN_VALUE = 0x0001; + + /** + * Bit masks for use with {@link #describeContents}: each bit represents a + * kind of object considered to have potential special significance when + * marshalled. + */ + public static final int CONTENTS_FILE_DESCRIPTOR = 0x0001; + + /** + * Describe the kinds of special objects contained in this Parcelable's + * marshalled representation. + * + * @return a bitmask indicating the set of special object types marshalled + * by the Parcelable. + */ + public int describeContents(); + + /** + * Flatten this object in to a Parcel. + * + * @param dest The Parcel in which the object should be written. + * @param flags Additional flags about how the object should be written. + * May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}. + */ + public void writeToParcel(Parcel dest, int flags); + + /** + * Interface that must be implemented and provided as a public CREATOR + * field that generates instances of your Parcelable class from a Parcel. + */ + public interface Creator { + /** + * Create a new instance of the Parcelable class, instantiating it + * from the given Parcel whose data had previously been written by + * {@link Parcelable#writeToParcel Parcelable.writeToParcel()}. + * + * @param source The Parcel to read the object's data from. + * @return Returns a new instance of the Parcelable class. + */ + public T createFromParcel(Parcel source); + + /** + * Create a new array of the Parcelable class. + * + * @param size Size of the array. + * @return Returns an array of the Parcelable class, with every entry + * initialized to null. + */ + public T[] newArray(int size); + } +} -- cgit v1.1