Most visited

Recently visited

Added in API level 1

Parcel

public final class Parcel
extends Object

java.lang.Object
   ↳ android.os.Parcel


容器用于可以通过IBinder发送的消息(数据和对象引用)。 一个包裹可以同时包含在IPC的另一侧(使用这里用于编写特定类型的各种方法,或者一般的Parcelable接口)的Parcelable数据,以及引起另一侧接收的对象的活动IBinder一个代理IBinder与包裹中的原始IBinder连接。

包裹不是通用的序列化机制。 该类(以及用于将任意对象放入Parcel的对应Parcelable API)被设计为高性能IPC传输。 因此,将任何Parcel数据放入持久性存储中是不恰当的:Parcel中任何数据的底层实现中的更改都会导致旧数据无法读取。

大部分的Parcel API都围绕着读写各种类型的数据。 这些功能有六大类可用。

Primitives

最基本的数据功能是写入和读取原始数据类型: writeByte(byte)readByte()writeDouble(double)readDouble()writeFloat(float)readFloat()writeInt(int)readInt()writeLong(long)readLong()writeString(String)readString() 大多数其他数据操作都建立在这些之上。 给定数据使用主机CPU的字节进行写入和读取。

Primitive Arrays

读取和写入原始对象的原始数组有多种方法,通常会导致写入4个字节的长度,然后是原始数据项。 读取方法可以将数据读入现有数组,或创建并返回新数组。 这些可用的类型是:

Parcelables

Parcelable协议为对象从Parcels写入和读取自身提供了一种非常有效的(但低级别的)协议。 您可以使用直接方法writeParcelable(Parcelable, int)readParcelable(ClassLoader)writeParcelableArray(T[], int)readParcelableArray(ClassLoader)来编写或读取。 这些方法将类类型及其数据写入Parcel,从而允许在稍后阅读时从相应的类加载器重建该类。

也有一些提供更有效的方式与Parcelables并工作方法: writeTypedObject(T, int)writeTypedArray(T[], int)writeTypedList(List ) readTypedObject(Parcelable.Creator ) createTypedArray(Parcelable.Creator ) createTypedArrayList(Parcelable.Creator ) 这些方法不会写入原始对象的类信息:相反,读取函数的调用者必须知道需要什么类型,并在合适的Parcelable.Creator传递,以正确构造新对象并读取其数据。 (为了更高效地编写和读取非空的单个Parceable对象,您可以直接调用Parcelable.writeToParcelParcelable.Creator.createFromParcel

Bundles

一个称为Bundle特殊类型安全容器可用于异构值的键/值映射。 这对于提高数据读写性能的优化有很多优化,其类型安全的API避免了在最终将数据内容封装到Parcel时难以调试类型错误。 使用的方法是writeBundle(Bundle)readBundle() ,并readBundle(ClassLoader)

Active Objects

Parcel的一个不寻常的功能是可以读取和写入活动对象。 对于这些对象,不写入对象的实际内容,而是写入引用该对象的特殊标记。 从Parcel中读回对象时,您不会获得对象的新实例,而是一个对原来写入的完全相同对象进行操作的句柄。 有两种形式的活动对象可用。

Binder对象是Android通用跨进程通信系统的核心工具。 IBinder接口描述了一个带有Binder对象的抽象协议。 任何这样的接口都可以写入到一个Parcel中,读取后您将收到实现该接口的原始对象或者将调用回传给原始对象的特殊代理实现。 使用的方法是writeStrongBinder(IBinder)writeStrongInterface(IInterface)readStrongBinder()writeBinderArray(IBinder[])readBinderArray(IBinder[])createBinderArray()writeBinderList(List)readBinderList(List)createBinderArrayList()

可以编写表示原始Linux文件描述符标识符的FileDescriptor对象,并返回ParcelFileDescriptor对象以在原始文件描述符上操作。 返回文件描述符是原始的文件描述符的DUP:对象和fd是不同的,但在相同的底层文件流进行操作,具有相同的位置,等。该方法使用是writeFileDescriptor(FileDescriptor)readFileDescriptor()

Untyped Containers

最后一类方法用于编写和读取任意类型的标准Java容器。 这些都围绕着定义允许的对象类型的writeValue(Object)readValue(ClassLoader)方法。 该容器的方法是writeArray(Object[])readArray(ClassLoader)writeList(List)readList(List, ClassLoader)readArrayList(ClassLoader)writeMap(Map)readMap(Map, ClassLoader)writeSparseArray(SparseArray)readSparseArray(ClassLoader)

Summary

Fields

public static final Creator<String> STRING_CREATOR

Public methods

final void appendFrom(Parcel parcel, int offset, int length)
final IBinder[] createBinderArray()
final ArrayList<IBinder> createBinderArrayList()

从当前dataPosition()处使用 writeBinderList(List ) 编写的 writeBinderList(List ) 中读取并返回包含IBinder对象的新ArrayList对象。

final boolean[] createBooleanArray()
final byte[] createByteArray()

从包中读取并返回一个byte []对象。

final char[] createCharArray()
final double[] createDoubleArray()
final float[] createFloatArray()
final int[] createIntArray()
final long[] createLongArray()
final String[] createStringArray()
final ArrayList<String> createStringArrayList()

从当前dataPosition()处使用 writeStringList(List ) 编写的 writeStringList(List ) 中读取并返回一个包含String对象的新ArrayList。

final <T> T[] createTypedArray(Creator<T> c)

从当前dataPosition()中的parcel中读取并返回一个包含特定对象类型的新数组。

final <T> ArrayList<T> createTypedArrayList(Creator<T> c)

从当前dataPosition()中用 writeTypedList(List ) 编写的 writeTypedList(List ) 中读取并返回一个包含特定对象类型的新ArrayList。

final int dataAvail()

返回剩余要从宗地中读取的数据量。

final int dataCapacity()

返回宗地中的空间总量。

final int dataPosition()

返回宗地数据中的当前位置。

final int dataSize()

返回包裹中包含的数据总量。

final void enforceInterface(String interfaceName)
final boolean hasFileDescriptors()

报告包裹是否包含任何编组文件描述符。

final byte[] marshall()

返回宗地的原始字节。

static Parcel obtain()

从池中检索新的Parcel对象。

final Object[] readArray(ClassLoader loader)

在当前dataPosition()中从包中读取并返回一个新的Object数组。

final ArrayList readArrayList(ClassLoader loader)

从当前dataPosition()的parcel中读取并返回一个新的ArrayList对象。

final void readBinderArray(IBinder[] val)
final void readBinderList(List<IBinder> list)

读入在当前dataPosition()中使用 writeBinderList(List ) 编写的给定列表项IBinder对象。

final void readBooleanArray(boolean[] val)
final Bundle readBundle()

从当前dataPosition()的parcel中读取并返回一个新的Bundle对象。

final Bundle readBundle(ClassLoader loader)

从当前dataPosition()的parcel中读取并返回一个新的Bundle对象,使用给定的类加载器来初始化Bundle的类加载器,以便以后检索Parcelable对象。

final byte readByte()

在当前dataPosition()处从包中读取一个字节值。

final void readByteArray(byte[] val)

从包中读取一个byte []对象并将其复制到给定的字节数组中。

final void readCharArray(char[] val)
final double readDouble()

在当前dataPosition()处从地块读取双精度浮点值。

final void readDoubleArray(double[] val)
final void readException()

用于从包裹头部读取异常结果的特殊功能,用于在收到交易结果后使用。

final void readException(int code, String msg)

抛出给定消息的异常。

final ParcelFileDescriptor readFileDescriptor()

从当前dataPosition()的parcel中读取FileDescriptor。

final float readFloat()

从当前dataPosition()的地块中读取浮点值。

final void readFloatArray(float[] val)
final HashMap readHashMap(ClassLoader loader)

请使用 readBundle(ClassLoader)代替(其数据必须被写入与 writeBundle(Bundle)

final int readInt()

在当前dataPosition()处从地块读取一个整数值。

final void readIntArray(int[] val)
final void readList(List outVal, ClassLoader loader)

从当前dataPosition()的parcel中读取现有的List对象,使用给定的类加载器加载任何封闭的Parcelables。

final long readLong()

从当前dataPosition()的地块中读取一个长整数值。

final void readLongArray(long[] val)
final void readMap(Map outVal, ClassLoader loader)

请使用 readBundle(ClassLoader)代替(其数据必须被写入与 writeBundle(Bundle)

final <T extends Parcelable> T readParcelable(ClassLoader loader)

从包裹中读取并返回一个新的Parcelable。

final Parcelable[] readParcelableArray(ClassLoader loader)

从包裹中读取并返回一个新的Parcelable数组。

final PersistableBundle readPersistableBundle()

从当前dataPosition()的parcel中读取并返回一个新的Bundle对象。

final PersistableBundle readPersistableBundle(ClassLoader loader)

从当前dataPosition()的parcel中读取并返回一个新的Bundle对象,使用给定的类加载器来初始化Bundle的类加载器,以便以后检索Parcelable对象。

final Serializable readSerializable()

从包中读取并返回一个新的Serializable对象。

final Size readSize()

从当前dataPosition()的地块中读取大小。

final SizeF readSizeF()

在当前dataPosition()中从包中读取SizeF。

final SparseArray readSparseArray(ClassLoader loader)

从当前dataPosition()的parcel中读取并返回一个新的SparseArray对象。

final SparseBooleanArray readSparseBooleanArray()

从当前dataPosition()的parcel中读取并返回一个新的SparseBooleanArray对象。

final String readString()

从当前dataPosition()的地块中读取字符串值。

final void readStringArray(String[] val)
final void readStringList(List<String> list)

读入在当前dataPosition()中用 writeStringList(List ) 写入的给定列表项目字符串对象。

final IBinder readStrongBinder()

从当前dataPosition()的地块中读取一个对象。

final <T> void readTypedArray(T[] val, Creator<T> c)
final <T> void readTypedList(List<T> list, Creator<T> c)

读入包含在当前dataPosition()处使用 writeTypedList(List ) 编写的特定对象类型的给定List列表项。

final <T> T readTypedObject(Creator<T> c)

从parcel中读取并返回一个类型化的Parcelable对象。

final Object readValue(ClassLoader loader)

从包裹中读取输入的对象。

final void recycle()

将一个Parcel对象放回池中。

final void setDataCapacity(int size)

更改包裹的容量(当前可用空间)。

final void setDataPosition(int pos)

移动宗地中的当前读/写位置。

final void setDataSize(int size)

更改宗地中的数据量。

final void unmarshall(byte[] data, int offset, int length)

将数据中的字节设置为该宗地的原始字节。

final void writeArray(Object[] val)

在当前dataPosition()中将对象数组展平成parcel,如果需要的话可以增加dataCapacity()。

final void writeBinderArray(IBinder[] val)
final void writeBinderList(List<IBinder> val)

如果需要,将包含IBinder对象的列表展平到parcel,当前dataPosition()和增长的dataCapacity()。

final void writeBooleanArray(boolean[] val)
final void writeBundle(Bundle val)

在当前dataPosition()中将Bundle平铺到宗地中,如果需要,则增加dataCapacity()。

final void writeByte(byte val)

在当前的dataPosition()中将一个字节值写入parcel,如果需要,则增加dataCapacity()。

final void writeByteArray(byte[] b)

在当前的 dataPosition()处将字节数组写入包中,如果需要则增加 dataCapacity()

final void writeByteArray(byte[] b, int offset, int len)

在当前的 dataPosition()处将字节数组写入包中,如果需要则增加 dataCapacity()

final void writeCharArray(char[] val)
final void writeDouble(double val)

在当前的dataPosition()中将一个双精度浮点值写入parcel,如果需要,则增加dataCapacity()。

final void writeDoubleArray(double[] val)
final void writeException(异常 e)

用于在包裹头部写入异常结果的特殊功能,用于从事务中返回异常时使用。

final void writeFileDescriptor(FileDescriptor val)

将FileDescriptor写入当前dataPosition()中的parcel,如果需要,则增加dataCapacity()。

final void writeFloat(float val)

在当前dataPosition()中将浮点值写入parcel,如果需要,则增加dataCapacity()。

final void writeFloatArray(float[] val)
final void writeInt(int val)

在当前dataPosition()中将整数值写入parcel,如果需要,则增加dataCapacity()。

final void writeIntArray(int[] val)
final void writeInterfaceToken(String interfaceName)

在当前 dataPosition()处存储或读取宗地中的IBinder界面令牌。

final void writeList(List val)

在当前dataPosition()中将列表平铺到宗地中,如果需要,可以增加dataCapacity()。

final void writeLong(long val)

在当前dataPosition()中将长整数值写入parcel,如果需要,则增加dataCapacity()。

final void writeLongArray(long[] val)
final void writeMap(Map val)

请改用 writeBundle(Bundle)

final void writeNoException()

用于在包裹前面写入信息的特殊功能,表示没有发生异常。

final void writeParcelable(Parcelable p, int parcelableFlags)

将Parcelable的类名称及其内容拼合到宗地中。

final <T extends Parcelable> void writeParcelableArray(T[] value, int parcelableFlags)

将不同类型的Parcelable对象写入Parcel。

final void writePersistableBundle(PersistableBundle val)

在当前dataPosition()处将PersistableBundle展平到包裹中,如果需要,则增加dataCapacity()。

final void writeSerializable(Serializable s)

将通用可序列化对象写入Parcel。

final void writeSize(Size val)

在当前dataPosition()中将大小平铺到宗地中,如果需要,则增加dataCapacity()。

final void writeSizeF(SizeF val)

在当前的dataPosition()中将一个SizeF展平到parcel中,如果需要的话可以增加dataCapacity()。

final void writeSparseArray(SparseArray<Object> val)

如果需要,将通用SparseArray平铺到当前dataPosition()的parcel中,并增加dataCapacity()。

final void writeSparseBooleanArray(SparseBooleanArray val)
final void writeString(String val)

在当前dataPosition()中将字符串值写入parcel,如果需要,则增加dataCapacity()。

final void writeStringArray(String[] val)
final void writeStringList(List<String> val)

将包含字符串对象的列表平铺到当前dataPosition()的parcel中,并在需要时增大dataCapacity()。

final void writeStrongBinder(IBinder val)

在当前dataPosition()中将对象写入parcel,如果需要,则增加dataCapacity()。

final void writeStrongInterface(IInterface val)

在当前dataPosition()中将对象写入parcel,如果需要,则增加dataCapacity()。

final <T extends Parcelable> void writeTypedArray(T[] val, int parcelableFlags)

如果需要,将包含特定对象类型的异构数组展开到parcel,当前dataPosition()和增长的dataCapacity()。

final <T extends Parcelable> void writeTypedList(List<T> val)

如果需要,将包含特定对象类型的List平铺到当前dataPosition()的parcel中,并逐渐增大dataCapacity()。

final <T extends Parcelable> void writeTypedObject(T val, int parcelableFlags)

将Parcelable对象拼合到宗地中。

final void writeValue(Object v)

将通用对象平铺到宗地中。

Protected methods

void finalize()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。

Inherited methods

From class java.lang.Object

Fields

STRING_CREATOR

Added in API level 1
Creator<String> STRING_CREATOR

Public methods

appendFrom

Added in API level 1
void appendFrom (Parcel parcel, 
                int offset, 
                int length)

Parameters
parcel Parcel
offset int
length int

createBinderArray

Added in API level 1
IBinder[] createBinderArray ()

Returns
IBinder[]

createBinderArrayList

Added in API level 1
ArrayList<IBinder> createBinderArrayList ()

从当前dataPosition()处使用writeBinderList(List ) 编写的writeBinderList(List ) 中读取并返回包含IBinder对象的新ArrayList对象。 如果先前写入的列表对象为null,则返回null。

Returns
ArrayList<IBinder> A newly created ArrayList containing strings with the same data as those that were previously written.

也可以看看:

createBooleanArray

Added in API level 1
boolean[] createBooleanArray ()

Returns
boolean[]

createByteArray

Added in API level 1
byte[] createByteArray ()

从包中读取并返回一个byte []对象。

Returns
byte[]

createCharArray

Added in API level 1
char[] createCharArray ()

Returns
char[]

createDoubleArray

Added in API level 1
double[] createDoubleArray ()

Returns
double[]

createFloatArray

Added in API level 1
float[] createFloatArray ()

Returns
float[]

createIntArray

Added in API level 1
int[] createIntArray ()

Returns
int[]

createLongArray

Added in API level 1
long[] createLongArray ()

Returns
long[]

createStringArray

Added in API level 1
String[] createStringArray ()

Returns
String[]

createStringArrayList

Added in API level 1
ArrayList<String> createStringArrayList ()

从当前dataPosition()中用writeStringList(List ) 写入的包中读取并返回一个包含String对象的新ArrayList。 如果先前写入的列表对象为null,则返回null。

Returns
ArrayList<String> A newly created ArrayList containing strings with the same data as those that were previously written.

也可以看看:

createTypedArray

Added in API level 1
T[] createTypedArray (Creator<T> c)

从当前dataPosition()中的parcel中读取并返回一个包含特定对象类型的新数组。 如果先前写入的数组为null,则返回null。 该数组必须先前通过writeTypedArray(T[], int)写入相同的对象类型。

Parameters
c Creator
Returns
T[] A newly created array containing objects with the same data as those that were previously written.

也可以看看:

createTypedArrayList

Added in API level 1
ArrayList<T> createTypedArrayList (Creator<T> c)

从当前dataPosition()中用writeTypedList(List ) 编写的writeTypedList(List ) 中读取并返回包含特定对象类型的新ArrayList。 如果先前写入的列表对象为null,则返回null。 该列表必须先前通过writeTypedList(List ) 写入相同的对象类型。

Parameters
c Creator
Returns
ArrayList<T> A newly created ArrayList containing objects with the same data as those that were previously written.

也可以看看:

dataAvail

Added in API level 1
int dataAvail ()

返回剩余要从宗地中读取的数据量。 那就是dataSize() - dataPosition()

Returns
int

dataCapacity

Added in API level 1
int dataCapacity ()

返回宗地中的空间总量。 这总是> = dataSize() 它和dataSize()之间的差异是在包裹需要重新分配其数据缓冲区之前剩余的空间量。

Returns
int

dataPosition

Added in API level 1
int dataPosition ()

返回宗地数据中的当前位置。 绝不超过dataSize()

Returns
int

dataSize

Added in API level 1
int dataSize ()

返回包裹中包含的数据总量。

Returns
int

enforceInterface

Added in API level 1
void enforceInterface (String interfaceName)

Parameters
interfaceName String

hasFileDescriptors

Added in API level 1
boolean hasFileDescriptors ()

报告包裹是否包含任何编组文件描述符。

Returns
boolean

marshall

Added in API level 1
byte[] marshall ()

返回宗地的原始字节。

您在此处检索的数据不得放置在任何类型的永久存储器中(在本地磁盘上,在网络中等)。 为此,您应该使用标准序列化或其他类型的通用序列化机制。 地块编组表示针对本地IPC进行了高度优化,因此不会尝试保持与在不同版本的平台中创建的数据的兼容性。

Returns
byte[]

obtain

Added in API level 1
Parcel obtain ()

从池中检索新的Parcel对象。

Returns
Parcel

readArray

Added in API level 1
Object[] readArray (ClassLoader loader)

在当前dataPosition()中从包中读取并返回一个新的Object数组。 如果先前写入的数组为null,则返回null。 给定的类加载器将用于加载任何封装的可读文件。

Parameters
loader ClassLoader
Returns
Object[]

readArrayList

Added in API level 1
ArrayList readArrayList (ClassLoader loader)

从当前dataPosition()的parcel中读取并返回一个新的ArrayList对象。 如果先前写入的列表对象为null,则返回null。 给定的类加载器将用于加载任何封装的可读文件。

Parameters
loader ClassLoader
Returns
ArrayList

readBinderArray

Added in API level 1
void readBinderArray (IBinder[] val)

Parameters
val IBinder

readBinderList

Added in API level 1
void readBinderList (List<IBinder> list)

读入在当前dataPosition()中使用 writeBinderList(List ) 写入的给定列表项IBinder对象。

Parameters
list List
Returns
void A newly created ArrayList containing strings with the same data as those that were previously written.

也可以看看:

readBooleanArray

Added in API level 1
void readBooleanArray (boolean[] val)

Parameters
val boolean

readBundle

Added in API level 1
Bundle readBundle ()

从当前dataPosition()的parcel中读取并返回一个新的Bundle对象。 如果先前编写的Bundle对象为null,则返回null。

Returns
Bundle

readBundle

Added in API level 1
Bundle readBundle (ClassLoader loader)

从当前dataPosition()的parcel中读取并返回一个新的Bundle对象,使用给定的类加载器来初始化Bundle的类加载器,以便以后检索Parcelable对象。 如果先前编写的Bundle对象为null,则返回null。

Parameters
loader ClassLoader
Returns
Bundle

readByte

Added in API level 1
byte readByte ()

在当前dataPosition()处从包中读取一个字节值。

Returns
byte

readByteArray

Added in API level 1
void readByteArray (byte[] val)

从包中读取一个byte []对象并将其复制到给定的字节数组中。

Parameters
val byte

readCharArray

Added in API level 1
void readCharArray (char[] val)

Parameters
val char

readDouble

Added in API level 1
double readDouble ()

在当前dataPosition()处从地块读取双精度浮点值。

Returns
double

readDoubleArray

Added in API level 1
void readDoubleArray (double[] val)

Parameters
val double

readException

Added in API level 1
void readException ()

用于从包裹头部读取异常结果的特殊功能,用于在收到交易结果后使用。 如果它已被写入包裹,这将为您抛出异常,否则返回并让您从包中读取正常结果数据。

也可以看看:

readException

Added in API level 1
void readException (int code, 
                String msg)

抛出给定消息的异常。 不打算在Parcel类之外使用。

Parameters
code int: Used to determine which exception class to throw.
msg String: The exception message.

readFileDescriptor

Added in API level 1
ParcelFileDescriptor readFileDescriptor ()

从当前dataPosition()的parcel中读取FileDescriptor。

Returns
ParcelFileDescriptor

readFloat

Added in API level 1
float readFloat ()

从当前dataPosition()的地块中读取浮点值。

Returns
float

readFloatArray

Added in API level 1
void readFloatArray (float[] val)

Parameters
val float

readHashMap

Added in API level 1
HashMap readHashMap (ClassLoader loader)

请使用 readBundle(ClassLoader)代替(其数据必须用 writeBundle(Bundle)写入),使用给定的类加载器读取并从当前dataPosition()中的parcel返回一个新的HashMap对象,以加载任何封闭的Parcelables。如果先前编写的映射对象返回null为空。

Parameters
loader ClassLoader
Returns
HashMap

readInt

Added in API level 1
int readInt ()

在当前dataPosition()处从地块读取一个整数值。

Returns
int

readIntArray

Added in API level 1
void readIntArray (int[] val)

Parameters
val int

readList

Added in API level 1
void readList (List outVal, 
                ClassLoader loader)

从当前dataPosition()的parcel中读取现有的List对象,使用给定的类加载器加载任何封闭的Parcelables。 如果它为空,则使用默认的类加载器。

Parameters
outVal List
loader ClassLoader

readLong

Added in API level 1
long readLong ()

从当前dataPosition()的地块中读取一个长整数值。

Returns
long

readLongArray

Added in API level 1
void readLongArray (long[] val)

Parameters
val long

readMap

Added in API level 1
void readMap (Map outVal, 
                ClassLoader loader)

请使用 readBundle(ClassLoader)代替(其数据必须被写入与 writeBundle(Bundle)在当前dataPosition阅读到现有的Map对象从包裹()。

Parameters
outVal Map
loader ClassLoader

readParcelable

Added in API level 1
T readParcelable (ClassLoader loader)

从包裹中读取并返回一个新的Parcelable。 给定的类加载器将用于加载任何封装的可读文件。 如果它为空,将使用默认的类加载器。

Parameters
loader ClassLoader: A ClassLoader from which to instantiate the Parcelable object, or null for the default class loader.
Returns
T Returns the newly created Parcelable, or null if a null object has been written.
Throws
BadParcelableException Throws BadParcelableException if there was an error trying to instantiate the Parcelable.

readParcelableArray

Added in API level 1
Parcelable[] readParcelableArray (ClassLoader loader)

从包裹中读取并返回一个新的Parcelable数组。 给定的类加载器将用于加载任何封装的可读文件。

Parameters
loader ClassLoader
Returns
Parcelable[] the Parcelable array, or null if the array is null

readPersistableBundle

Added in API level 21
PersistableBundle readPersistableBundle ()

从当前dataPosition()的parcel中读取并返回一个新的Bundle对象。 如果先前编写的Bundle对象为null,则返回null。

Returns
PersistableBundle

readPersistableBundle

Added in API level 21
PersistableBundle readPersistableBundle (ClassLoader loader)

从当前dataPosition()的parcel中读取并返回一个新的Bundle对象,使用给定的类加载器来初始化Bundle的类加载器,以便以后检索Parcelable对象。 如果先前编写的Bundle对象为null,则返回null。

Parameters
loader ClassLoader
Returns
PersistableBundle

readSerializable

Added in API level 1
Serializable readSerializable ()

从包中读取并返回一个新的Serializable对象。

Returns
Serializable the Serializable object, or null if the Serializable name wasn't found in the parcel.

readSize

Added in API level 21
Size readSize ()

从当前dataPosition()的地块中读取大小。

Returns
Size

readSizeF

Added in API level 21
SizeF readSizeF ()

在当前dataPosition()中从包中读取SizeF。

Returns
SizeF

readSparseArray

Added in API level 1
SparseArray readSparseArray (ClassLoader loader)

从当前dataPosition()的parcel中读取并返回一个新的SparseArray对象。 如果先前写入的列表对象为null,则返回null。 给定的类加载器将用于加载任何封装的可读文件。

Parameters
loader ClassLoader
Returns
SparseArray

readSparseBooleanArray

Added in API level 1
SparseBooleanArray readSparseBooleanArray ()

从当前dataPosition()的parcel中读取并返回一个新的SparseBooleanArray对象。 如果先前写入的列表对象为null,则返回null。

Returns
SparseBooleanArray

readString

Added in API level 1
String readString ()

从当前dataPosition()的地块中读取字符串值。

Returns
String

readStringArray

Added in API level 1
void readStringArray (String[] val)

Parameters
val String

readStringList

Added in API level 1
void readStringList (List<String> list)

读入在当前dataPosition()处使用 writeStringList(List ) 写入的给定列表项目字符串对象。

Parameters
list List
Returns
void A newly created ArrayList containing strings with the same data as those that were previously written.

也可以看看:

readStrongBinder

Added in API level 1
IBinder readStrongBinder ()

从当前dataPosition()的地块中读取一个对象。

Returns
IBinder

readTypedArray

Added in API level 1
void readTypedArray (T[] val, 
                Creator<T> c)

Parameters
val T
c Creator

readTypedList

Added in API level 1
void readTypedList (List<T> list, 
                Creator<T> c)

读入包含在当前dataPosition()处使用writeTypedList(List ) 编写的特定对象类型的给定List列表项。 该列表必须先前通过writeTypedList(List ) 以相同的对象类型书写。

Parameters
list List
c Creator
Returns
void A newly created ArrayList containing objects with the same data as those that were previously written.

也可以看看:

readTypedObject

Added in API level 23
T readTypedObject (Creator<T> c)

从parcel中读取并返回一个类型化的Parcelable对象。 如果先前写入的对象为null,则返回null。 该对象必须先前通过writeTypedObject(T, int)写入相同的对象类型。

Parameters
c Creator
Returns
T A newly created object of the type that was previously written.

也可以看看:

readValue

Added in API level 1
Object readValue (ClassLoader loader)

从包裹中读取输入的对象。 给定的类加载器将用于加载任何封装的可读文件。 如果它为空,将使用默认的类加载器。

Parameters
loader ClassLoader
Returns
Object

recycle

Added in API level 1
void recycle ()

将一个Parcel对象放回池中。 此通话后,请勿触摸该物体。

setDataCapacity

Added in API level 1
void setDataCapacity (int size)

更改包裹的容量(当前可用空间)。

Parameters
size int: The new capacity of the parcel, in bytes. Can not be less than dataSize() -- that is, you can not drop existing data with this method.

setDataPosition

Added in API level 1
void setDataPosition (int pos)

移动宗地中的当前读/写位置。

Parameters
pos int: New offset in the parcel; must be between 0 and dataSize().

setDataSize

Added in API level 1
void setDataSize (int size)

更改宗地中的数据量。 可以小于或大于当前大小。 如果大于当前容量,将分配更多内存。

Parameters
size int: The new number of bytes in the Parcel.

unmarshall

Added in API level 1
void unmarshall (byte[] data, 
                int offset, 
                int length)

将数据中的字节设置为该宗地的原始字节。

Parameters
data byte
offset int
length int

writeArray

Added in API level 1
void writeArray (Object[] val)

在当前dataPosition()中将对象数组展平成parcel,如果需要的话可以增加dataCapacity()。 数组值使用writeValue(Object)写入,并且必须遵循那里的规范。

Parameters
val Object

writeBinderArray

Added in API level 1
void writeBinderArray (IBinder[] val)

Parameters
val IBinder

writeBinderList

Added in API level 1
void writeBinderList (List<IBinder> val)

如果需要,将包含IBinder对象的列表展平到parcel,当前dataPosition()和增长的dataCapacity()。 他们以后可以通过createBinderArrayList()readBinderList(List ) 进行检索。

Parameters
val List: The list of strings to be written.

也可以看看:

writeBooleanArray

Added in API level 1
void writeBooleanArray (boolean[] val)

Parameters
val boolean

writeBundle

Added in API level 1
void writeBundle (Bundle val)

在当前dataPosition()中将Bundle平铺到宗地中,如果需要,则增加dataCapacity()。

Parameters
val Bundle

writeByte

Added in API level 1
void writeByte (byte val)

在当前的dataPosition()中将一个字节值写入parcel,如果需要,则增加dataCapacity()。

Parameters
val byte

writeByteArray

Added in API level 1
void writeByteArray (byte[] b)

在当前 dataPosition()的地块中写入一个字节数组,如果需要的 dataPosition() ,增加 dataCapacity()

Parameters
b byte: Bytes to place into the parcel.

writeByteArray

Added in API level 1
void writeByteArray (byte[] b, 
                int offset, 
                int len)

在当前的 dataPosition()一个字节数组写入包裹,如果需要的 dataPosition() ,增加 dataCapacity()

Parameters
b byte: Bytes to place into the parcel.
offset int: Index of first byte to be written.
len int: Number of bytes to write.

writeCharArray

Added in API level 1
void writeCharArray (char[] val)

Parameters
val char

writeDouble

Added in API level 1
void writeDouble (double val)

在当前的dataPosition()中将一个双精度浮点值写入parcel,如果需要,则增加dataCapacity()。

Parameters
val double

writeDoubleArray

Added in API level 1
void writeDoubleArray (double[] val)

Parameters
val double

writeException

Added in API level 1
void writeException (异常 e)

用于在包裹头部写入异常结果的特殊功能,用于从事务中返回异常时使用。 请注意,目前这只支持一些异常类型; 任何其他异常将被此函数作为RuntimeException重新抛出(在分派事务时被系统的最后一个异常处理捕获)。

支持的异常类型是:

Parameters
e 异常: The Exception to be written.

也可以看看:

writeFileDescriptor

Added in API level 1
void writeFileDescriptor (FileDescriptor val)

将FileDescriptor写入当前dataPosition()中的parcel,如果需要,则增加dataCapacity()。

文件描述符不会被关闭,当从Binder调用返回对象时,这可能导致文件描述符泄漏。 改为使用writeToParcel(Parcel, int) ,它接受上下文标志,如果设置了PARCELABLE_WRITE_RETURN_VALUE ,将关闭原始文件描述符。

Parameters
val FileDescriptor

writeFloat

Added in API level 1
void writeFloat (float val)

在当前dataPosition()中将浮点值写入parcel,如果需要,则增加dataCapacity()。

Parameters
val float

writeFloatArray

Added in API level 1
void writeFloatArray (float[] val)

Parameters
val float

writeInt

Added in API level 1
void writeInt (int val)

在当前dataPosition()中将整数值写入parcel,如果需要,则增加dataCapacity()。

Parameters
val int

writeIntArray

Added in API level 1
void writeIntArray (int[] val)

Parameters
val int

writeInterfaceToken

Added in API level 1
void writeInterfaceToken (String interfaceName)

在当前的dataPosition()的地块中存储或读取IBinder界面令牌。 这用于验证编组事务是针对目标接口的。

Parameters
interfaceName String

writeList

Added in API level 1
void writeList (List val)

在当前dataPosition()中将列表平铺到宗地中,如果需要,可以增加dataCapacity()。 列表值使用writeValue(Object)编写,并且必须遵循该规范。

Parameters
val List

writeLong

Added in API level 1
void writeLong (long val)

在当前dataPosition()中将长整数值写入parcel,如果需要,则增加dataCapacity()。

Parameters
val long

writeLongArray

Added in API level 1
void writeLongArray (long[] val)

Parameters
val long

writeMap

Added in API level 1
void writeMap (Map val)

请改用writeBundle(Bundle) 在当前dataPosition()中将Map平铺到包中,如果需要,则增加dataCapacity()。 Map键必须是String对象。 地图值使用writeValue(Object)编写,并且必须遵循那里的规范。

强烈建议使用 writeBundle(Bundle)而不是此方法,因为Bundle类提供了一个类型安全的API,它允许您在编组时避免神秘的类型错误。

Parameters
val Map

writeNoException

Added in API level 1
void writeNoException ()

用于在包裹前面写入信息的特殊功能,表示没有发生异常。

也可以看看:

writeParcelable

Added in API level 1
void writeParcelable (Parcelable p, 
                int parcelableFlags)

将Parcelable的类名称及其内容拼合到宗地中。

Parameters
p Parcelable: The Parcelable object to be written.
parcelableFlags int: Contextual flags as per Parcelable.writeToParcel().

writeParcelableArray

Added in API level 1
void writeParcelableArray (T[] value, 
                int parcelableFlags)

将不同类型的Parcelable对象写入Parcel。 数组中的每个对象都与其类名一起写入,以便稍后可以实例化正确的类。 因此,这比writeTypedArray(T[], int)开销要writeTypedArray(T[], int) ,但会正确处理包含多种类型对象的数组。

Parameters
value T: The array of objects to be written.
parcelableFlags int: Contextual flags as per Parcelable.writeToParcel().

也可以看看:

writePersistableBundle

Added in API level 21
void writePersistableBundle (PersistableBundle val)

在当前dataPosition()处将PersistableBundle展平到包裹中,如果需要,则增加dataCapacity()。

Parameters
val PersistableBundle

writeSerializable

Added in API level 1
void writeSerializable (Serializable s)

将通用可序列化对象写入Parcel。 强烈建议避免使用此方法,因为序列化开销非常大,并且这种方法比使用其他方法将数据写入Parcel时要慢得多。

Parameters
s Serializable

writeSize

Added in API level 21
void writeSize (Size val)

在当前dataPosition()中将大小平铺到宗地中,如果需要,则增加dataCapacity()。

Parameters
val Size

writeSizeF

Added in API level 21
void writeSizeF (SizeF val)

在当前的dataPosition()中将一个SizeF展平到parcel中,如果需要的话可以增加dataCapacity()。

Parameters
val SizeF

writeSparseArray

Added in API level 1
void writeSparseArray (SparseArray<Object> val)

如果需要,将通用SparseArray平铺到当前dataPosition()的parcel中,并增加dataCapacity()。 SparseArray值使用writeValue(Object)编写,并且必须遵循该规范。

Parameters
val SparseArray

writeSparseBooleanArray

Added in API level 1
void writeSparseBooleanArray (SparseBooleanArray val)

Parameters
val SparseBooleanArray

writeString

Added in API level 1
void writeString (String val)

在当前dataPosition()中将字符串值写入parcel,如果需要,则增加dataCapacity()。

Parameters
val String

writeStringArray

Added in API level 1
void writeStringArray (String[] val)

Parameters
val String

writeStringList

Added in API level 1
void writeStringList (List<String> val)

将包含字符串对象的列表平铺到当前dataPosition()的parcel中,并在需要时增大dataCapacity()。 稍后可以用createStringArrayList()readStringList(List ) 检索它们。

Parameters
val List: The list of strings to be written.

也可以看看:

writeStrongBinder

Added in API level 1
void writeStrongBinder (IBinder val)

在当前dataPosition()中将对象写入parcel,如果需要,则增加dataCapacity()。

Parameters
val IBinder

writeStrongInterface

Added in API level 1
void writeStrongInterface (IInterface val)

在当前dataPosition()中将对象写入parcel,如果需要,则增加dataCapacity()。

Parameters
val IInterface

writeTypedArray

Added in API level 1
void writeTypedArray (T[] val, 
                int parcelableFlags)

如果需要,将包含特定对象类型的异构数组展开到parcel,当前dataPosition()和增长的dataCapacity()。 数组中对象的类型必须是实现Parcelable的类型。 然而,与writeParcelableArray(T[], int)方法不同,只有对象的原始数据被写入,而不是它们的类型,所以您必须使用readTypedArray(T[], Parcelable.Creator ) 和正确的对应Parcelable.Creator实现来解组它们。

Parameters
val T: The array of objects to be written.
parcelableFlags int: Contextual flags as per Parcelable.writeToParcel().

也可以看看:

writeTypedList

Added in API level 1
void writeTypedList (List<T> val)

如果需要,将包含特定对象类型的List平铺到当前dataPosition()的parcel中,并逐渐增大dataCapacity()。 列表中的对象类型必须是实现Parcelable的类型。 然而,与通用的writeList()方法不同,只有对象的原始数据被写入,而不是它们的类型,所以您必须使用相应的readTypedList()来解组它们。

Parameters
val List: The list of objects to be written.

也可以看看:

writeTypedObject

Added in API level 23
void writeTypedObject (T val, 
                int parcelableFlags)

将Parcelable对象拼合到宗地中。

Parameters
val T: The Parcelable object to be written.
parcelableFlags int: Contextual flags as per Parcelable.writeToParcel().

也可以看看:

writeValue

Added in API level 1
void writeValue (Object v)

将通用对象平铺到宗地中。 给定的对象值当前可以是以下类型之一:

Parcelable对象写入与 writeToParcel(Parcel, int)使用的0上下文标志当序列包含对象 ParcelFileDescriptor S,这可能会导致文件描述符泄漏时它们返回从活页夹调用(其中 PARCELABLE_WRITE_RETURN_VALUE应当被使用)。

Parameters
v Object

Protected methods

finalize

Added in API level 1
void finalize ()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 一个子类覆盖了finalize方法来处置系统资源或执行其他清理。

的常规协定finalize是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize方法可以采取任何行动,包括使该对象再次可用于其他线程; 然而, finalize的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。

finalize方法Object执行特殊操作; 它只是正常返回。 Object子类可能会覆盖此定义。

Java编程语言不保证哪个线程将为任何给定对象调用finalize方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。

在针对某个对象调用 finalize方法后,将不会采取进一步的操作,直到Java虚拟机再次确定没有任何方式可以通过任何尚未死亡的线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。

对于任何给定的对象,Java虚拟机从不会多次调用 finalize方法。

finalize方法引发的任何异常 finalize导致此对象的终止停止,但会被忽略。

Throws
Throwable

Hooray!