鸿蒙OS Parcel

2022-08-30 14:19 更新

Parcel

java.lang.Object

|---ohos.utils.Parcel

public class Parcel
extends Object

用于进程间通信 (IPC) 的数据对象。

在 IPC 过程中,发送方可以使用 Parcel 提供的 write 方法将要发送的数据以特定格式写入 Parcel 对象,接收方可以使用 Parcel 提供的 read 方法从 包裹对象。

Parcel 实例的默认容量为 200KB。 如果您想要更多或更少,请使用 setCapacity(int) 更改它。

注意:只有以下数据类型的数据可以写入或读取 Parcel:byte、byteArray、short、shortArray、int、intArray、long、longArray、float、floatArray、double、doubleArray、boolean、booleanArray、char、charArray 、字符串、StringArray、PlainBooleanArray、Serializable、Sequenceable 和 SequenceableArray。

构造函数摘要

修饰符 构造函数 描述
protected Parcel()

方法总结

修饰符和类型 方法 描述
void addAppClassLoader(ClassLoader newClassLoader) 添加第三方 ClassLoader 用于实例初始化。
boolean appendFrom(Parcel other) 将指定 Parcel 对象的序列化值附加到此 Parcel 实例。
static Parcel create() 创建一个空的 Parcel 实例。
static Parcel create(long nativeHandler) 使用指定的处理程序创建一个空 Parcel 实例。
<T extends Sequenceable>T createSequenceable() 使用 Sequenceable.Producer#createFromParcel(Parcel) 从 Parcel 创建特定的 Sequenceable 对象。
<T extends Sequenceable>T createSequenceable(ClassLoader classLoader) 使用 Sequenceable.Producer#createFromParcel(Parcel) 从 Parcel 创建特定的 Sequenceable 对象。
Sequenceable[] createSequenceableArray() 使用 Sequenceable.Producer#createFromParcel(Parcel) 从 Parcel 创建一个特定的 Sequenceable 对象数组
protected void finalize() 当垃圾收集确定不再有对该对象的引用时,由对象上的垃圾收集器调用。
protected void flushBuffer() 清除 Parcel 实例中的数据。
byte[] getBytes() 从 Parcel 实例中读取所有字节。
int getCapacity() 获取 Parcel 实例的存储容量(以字节为单位)。
int getReadableBytes() 获取 Parcel 实例中的可读数据空间(以字节为单位)。
int getReadPosition() 获取 Parcel 实例中的当前读取位置。
int getSize() 获取 Parcel 实例中包含的数据大小(以字节为单位)。
int getWritableBytes() 获取 Parcel 实例中的可写数据空间(以字节为单位)。
int getWritePosition() 获取 Parcel 实例中的当前写入位置。
boolean readBoolean() 从 Parcel 实例中读取一个布尔值。
boolean[] readBooleanArray() 从 Parcel 实例中读取一个布尔数组。
void readBooleanArray(boolean[] val) 从 Parcel 实例中读取一个布尔数组。
byte readByte() 从 Parcel 实例中读取一个字节值。
byte[] readByteArray() 从 Parcel 实例中读取一个字节数组。
void readByteArray(byte[] val) 从 Parcel 实例中读取一个字节数组。
char readChar() 从 Parcel 实例中读取单个字符值。
char[] readCharArray() 从 Parcel 实例中读取单个字符数组。
void readCharArray(char[] val) 从 Parcel 实例中读取单个字符数组。
double readDouble() 从 Parcel 实例中读取一个双精度浮点值。
double[] readDoubleArray() 从 Parcel 实例中读取一个双精度浮点数组。
void readDoubleArray(double[] val) 从 Parcel 实例中读取一个双精度浮点数组。
float readFloat() 从 Parcel 实例中读取一个浮点值。
float[] readFloatArray() 从 Parcel 实例中读取一个浮点数组。
void readFloatArray(float[] val) 从 Parcel 实例中读取一个浮点数组。
int readInt() 从 Parcel 实例中读取一个整数值。
int[] readIntArray() 从 Parcel 实例中读取一个整数数组。
void readIntArray(int[] val) 从 Parcel 实例中读取一个整数数组。
List<?> readList() 从此 Parcel 实例中读取对象列表。
long readLong() 从 Parcel 实例中读取一个长整数值。
long[] readLongArray() 从 Parcel 实例中读取一个长整数数组。
void readLongArray(long[] val) 从 Parcel 实例中读取一个长整数数组。
Map<?,?> readMap() 从此 Parcel 实例中读取 Map 对象。
void readPacMapEx(PacMapEx pacMapEx) 从此 Parcel 对象中读取 PacMapEx 对象。
ParcelableEx readParcelableEx(ClassLoader loader) 从此 Parcel 实例中读取 ParcelableEx 对象。
<T> PlainArray<T> readPlainArray(Class<T> clzType) 从此 Parcel 实例中读取一个 PlainArray 对象。
PlainBooleanArray readPlainBooleanArray() 从此 Parcel 实例中读取一个 PlainBooleanArray 对象。
boolean readSequenceable(Sequenceable in) 从 Parcel 实例中读取一个 Sequenceable 对象。
void readSequenceableArray(Sequenceable[] val) 从 Parcel 实例中读取一个 Sequenceable 对象数组。
<T extends Sequenceable>List<T> readSequenceableList(Class<T> clz) 从此 Parcel 实例中读取指定类型的 Sequenceable 对象列表。
<T extends Sequenceable>MapString,T readSequenceableMap(Class<T> valueType) 从此 Parcel 实例中读取 Map 对象。
<T extends Serializable>T readSerializable(Class<T> clz) 从此 Parcel 实例中读取一个可序列化的对象。
short readShort() 从 Parcel 实例中读取一个短整数值。
short[] readShortArray() 从 Parcel 实例中读取一个短整数数组。
void readShortArray(short[] val) 从 Parcel 实例中读取一个短整数数组。
String readString() 从 Parcel 实例中读取字符串值。
String[] readStringArray() 从 Parcel 实例中读取一个字符串数组。
void readStringArray(String[] val) 从 Parcel 实例中读取一个字符串数组。
ListString readStringList() 从 Parcel 读取字符串列表。
Object readValue() 从此 Parcel 实例中读取一个对象。
void reclaim() 清除 Parcel 实例中的数据。
boolean rewindRead(int pos) 更改 Parcel 实例中的当前读取位置。
boolean rewindWrite(int pos) 更改 Parcel 实例中的当前写入位置。
boolean setCapacity(int capacity) 设置 Parcel 实例的存储容量(以字节为单位)。
boolean setSize(int size) 设置 Parcel 实例中包含的数据大小(以字节为单位)。
boolean writeBoolean(boolean val) 将一个布尔值写入 Parcel 实例。
boolean writeBooleanArray(boolean[] values) 将一个布尔数组写入 Parcel 实例。
boolean writeByte(byte val) 将字节值写入 Parcel 实例。
boolean writeByteArray(byte[] val) 将字节数组写入 Parcel 实例。
boolean writeBytes(byte[] val) 将字节写入 Parcel 实例。
boolean writeChar(char val) 将单个字符值写入 Parcel 实例。
boolean writeCharArray(char[] values) 将单个字符数组写入 Parcel 实例。
boolean writeDouble(double val) 将双精度浮点值写入 Parcel 实例。
boolean writeDoubleArray(double[] values) 将双精度浮点数组写入 Parcel 实例。
boolean writeFloat(float val) 将浮点值写入 Parcel 实例。
boolean writeFloatArray(float[] values) 将浮点数组写入 Parcel 实例。
boolean writeInt(int val) 将整数值写入 Parcel 实例。
boolean writeIntArray(int[] values) 将整数数组写入 Parcel 实例。
void writeList(List<?> values) 将对象列表写入此 Parcel 实例。
boolean writeLong(long val) 将一个长整数值写入 Parcel 实例。
boolean writeLongArray(long[] values) 将一个长整数数组写入 Parcel 实例。
void writeMap(Map<?,?> values) 将 Map 对象写入此 Parcel 实例。
void writeMap(Map<?,?> values, boolean isCross) 通过支持跨平台将 Map 对象写入此 Parcel 实例。
void writePacMapEx(PacMapEx val) 将 PacMapEx 对象写入此 Parcel 实例。
void writeParcelableEx(ParcelableEx val) 将 ParcelableEx 对象写入此 Parcel 实例。
<T> void writePlainArray(PlainArray<T> value) 将 PlainArray 对象写入此 Parcel 实例。
boolean writePlainBooleanArray(PlainBooleanArray value) 将 PlainBooleanArray 对象写入此 Parcel 实例。
void writeSequenceable(Sequenceable val) 将 Sequenceable 对象写入 Parcel 实例。
boolean writeSequenceableArray(Sequenceable[] values) 将 Sequenceable 对象数组写入 Parcel 实例。
boolean writeSequenceableList(List<? extends Sequenceable> values) 将 Sequenceable 列表写入此 Parcel 实例。
boolean writeSequenceableMap(Map<String,? extends Sequenceable> values) 将 Map 对象写入此 Parcel 实例。
void writeSerializable(Serializable object) 将可序列化对象写入此 Parcel 实例。
boolean writeShort(short val) 将一个短整数值写入 Parcel 实例。
boolean writeShortArray(short[] values) 将一个短整数数组写入 Parcel 实例。
boolean writeString(String val) 将字符串值写入 Parcel 实例。
boolean writeStringArray(String[] values) 将字符串数组写入 Parcel 实例。
boolean writeStringList(ListString values) 将字符串列表写入此 Parcel 实例。
void writeTypedSequenceable(Sequenceable sequenceable) 使用 Sequenceable.Producer#createFromParcel(Parcel) 将 Sequenceable 对象写入 Parcel 实例。
<T extends Sequenceable>void writeTypedSequenceableArray(T[] values) 使用 Sequenceable.Producer#createFromParcel(Parcel) 将 Sequenceable 对象数组写入 Parcel 实例。
void writeValue(Object value) 将对象写入此 Parcel 实例。
从类 java.lang.Object 继承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造函数详细信息

Parcel

protected Parcel()

方法详情

flushBuffer

protected void flushBuffer()

清除 Parcel 实例中的数据。

finalize

protected void finalize() throws Throwable

从类复制的描述:对象

当垃圾收集确定不再有对该对象的引用时,由对象上的垃圾收集器调用。子类覆盖 finalize 方法以释放系统资源或执行其他清理。

finalize 的一般约定是,当 Java™ 虚拟机确定不再有任何方法可以让任何尚未终止的线程访问该对象时调用它,除非是由于某个操作而导致的。由准备完成的其他对象或类的完成所采取。 finalize 方法可以采取任何行动,包括使该对象再次可供其他线程使用;然而,finalize 的通常目的是在对象被不可撤销地丢弃之前执行清理操作。例如,代表输入/输出连接的对象的 finalize 方法可能会执行显式 I/O 事务以在对象被永久丢弃之前中断连接。

Object 类的 finalize 方法不执行任何特殊操作;它只是正常返回。 Object 的子类可以覆盖这个定义。

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

在为一个对象调用 finalize 方法后,不会采取进一步的行动,直到 Java 虚拟机再次确定没有任何方法可以让任何尚未终止的线程访问该对象,包括可能的行动由其他准备完成的对象或类,此时该对象可能被丢弃。

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

finalize 方法抛出的任何异常都会导致该对象的终结被暂停,否则会被忽略。

覆盖:

在类 Object 中完成

Throws:

Throw名称 Throw描述
Throwable 此方法引发的异常

create

public static Parcel create()

创建一个空的 Parcel 实例。

返回:

返回一个 Parcel 实例。

create

public static Parcel create(long nativeHandler)

使用指定的处理程序创建一个空 Parcel 实例。

参数:

参数名称 参数描述
nativeHandler 指示本机中的处理程序指向一个包裹对象。

返回:

返回具有指定处理程序的 Parcel 实例。

reclaim

public void reclaim()

清除 Parcel 实例中的数据。

getSize

public final int getSize()

获取 Parcel 实例中包含的数据大小(以字节为单位)。

返回:

返回 Parcel 实例中包含的数据的大小。

getCapacity

public final int getCapacity()

获取 Parcel 实例的存储容量(以字节为单位)。

返回:

返回 Parcel 实例的存储容量。

setSize

public final boolean setSize(int size)

设置 Parcel 实例中包含的数据大小(以字节为单位)。

如果此方法中设置的数据大小大于 Parcel 的存储容量,则返回 false。

参数:

参数名称 参数描述
size 指示 Parcel 实例的数据大小。

返回:

设置成功返回 true; 否则返回 false。

setCapacity

public final boolean setCapacity(int capacity)

设置 Parcel 实例的存储容量(以字节为单位)。

如果此方法中设置的容量小于 Parcel 中包含的数据大小,则返回 false。

参数:

参数名称 参数描述
capacity Parcel实例的存储容量。

返回:

设置成功返回true; 否则返回 false。

getWritableBytes

public final int getWritableBytes()

获取 Parcel 实例中的可写数据空间(以字节为单位)。

可写数据空间 = Parcel 的存储容量 - Parcel 中包含的数据大小。

返回:

返回 Parcel 实例的可写数据空间。

getReadableBytes

public final int getReadableBytes()

获取 Parcel 实例中的可读数据空间(以字节为单位)。

可读数据空间 = Parcel 中包含的数据大小 - 已读取数据的大小。

返回:

返回 Parcel 实例的可读数据空间。

getReadPosition

public final int getReadPosition()

获取 Parcel 实例中的当前读取位置。

返回:

返回 Parcel 实例中的当前读取位置。

getWritePosition

public final int getWritePosition()

获取 Parcel 实例中的当前写入位置。

返回:

返回 Parcel 实例中的当前写入位置。

rewindRead

public final boolean rewindRead(int pos)

更改 Parcel 实例中的当前读取位置。

一般不建议更改当前读取位置。 如果必须更改,请将其更改到准确的位置。 否则,读取的数据可能不正确。

参数:

参数名称 参数描述
pos 指示开始数据读取的目标位置。

返回:

如果读取位置改变,则返回 true; 否则返回 false。

rewindWrite

public final boolean rewindWrite(int pos)

更改 Parcel 实例中的当前写入位置。

一般不建议更改当前写入位置。 如果必须更改,请将其更改到准确的位置。 否则,要读取的数据可能不正确。

参数:

参数名称 参数描述
pos 指示开始数据写入的目标位置。

返回:

如果写入位置改变,则返回 true; 否则返回 false。

writeByte

public final boolean writeByte(byte val)

将字节值写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的字节值。

返回:

如果值已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeShort

public final boolean writeShort(short val)

将一个短整数值写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的短整数值。

返回:

如果值已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeInt

public final boolean writeInt(int val)

将整数值写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的整数值。

返回:

如果值已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeLong

public final boolean writeLong(long val)

将一个长整数值写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的长整数值。

返回:

如果值已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeFloat

public final boolean writeFloat(float val)

将浮点值写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的浮点值。

返回:

如果值已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeDouble

public final boolean writeDouble(double val)

将双精度浮点值写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的双精度浮点值。

返回:

如果值已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeBoolean

public final boolean writeBoolean(boolean val)

将一个布尔值写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的布尔值。

返回:

如果值已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeChar

public final boolean writeChar(char val)

将单个字符值写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的单个字符值。

返回:

如果值已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeString

public final boolean writeString(String val)

将字符串值写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的字符串值。

返回:

如果值已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeSequenceable

public final void writeSequenceable(Sequenceable val)

将 Sequenceable 对象写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的 Sequenceable 对象。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

readByte

public final byte readByte()

从 Parcel 实例中读取一个字节值。

返回:

返回一个字节值。

readShort

public final short readShort()

从 Parcel 实例中读取一个短整数值。

返回:

返回一个短整数值。

readInt

public final int readInt()

从 Parcel 实例中读取一个整数值。

返回:

返回一个整数值。

readLong

public final long readLong()

从 Parcel 实例中读取一个长整数值。

返回:

返回一个长整数值。

readFloat

public final float readFloat()

从 Parcel 实例中读取一个浮点值。

返回:

返回一个浮点值。

readDouble

public final double readDouble()

从 Parcel 实例中读取一个双精度浮点值。

返回:

返回一个双精度浮点值。

readBoolean

public final boolean readBoolean()

从 Parcel 实例中读取一个布尔值。

返回:

返回一个布尔值。

readChar

public final char readChar()

从 Parcel 实例中读取单个字符值。

返回:

返回单个字符值。

readString

public final String readString()

从 Parcel 实例中读取字符串值。

返回:

返回一个字符串值。

readSequenceable

public final boolean readSequenceable(Sequenceable in)

从 Parcel 实例中读取一个 Sequenceable 对象。

参数:

参数名称 参数描述
in 指示需要使用 Parcel 执行解组操作的 Sequenceable 对象。

返回:

如果解组成功,则返回 true; 否则返回 false。

writeByteArray

public final boolean writeByteArray(byte[] val)

将字节数组写入 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的字节数组。

返回:

如果数组已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeBytes

public final boolean writeBytes(byte[] val)

将字节写入 Parcel 实例。

此方法与 writeByteArray 方法不同。 在该方法中,Parcel 不能调用其他方法写入数据,写入的数据只能通过调用 getBytes() 来读取。

参数:

参数名称 参数描述
val 指示要写入的字节。

返回:

如果字节已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeShortArray

public final boolean writeShortArray(short[] values)

将一个短整数数组写入 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的短整数数组。

返回:

如果数组已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeIntArray

public final boolean writeIntArray(int[] values)

将整数数组写入 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的整数数组。

返回:

如果数组已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeLongArray

public final boolean writeLongArray(long[] values)

将一个长整数数组写入 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的长整数数组。

返回:

如果数组已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeFloatArray

public final boolean writeFloatArray(float[] values)

将浮点数组写入 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的浮点数组。

返回:

如果数组已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeDoubleArray

public final boolean writeDoubleArray(double[] values)

将双精度浮点数组写入 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的双精度浮点数组。

返回:

如果数组已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeBooleanArray

public final boolean writeBooleanArray(boolean[] values)

将一个布尔数组写入 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的布尔数组。

返回:

如果数组已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeCharArray

public final boolean writeCharArray(char[] values)

将单个字符数组写入 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的单个字符数组。

返回:

如果数组已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeStringArray

public final boolean writeStringArray(String[] values)

将字符串数组写入 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的字符串数组。

返回:

如果数组已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeStringList

public final boolean writeStringList(ListString values)

将字符串列表写入此 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的字符串列表。

返回:

如果字符串列表写入成功,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeSequenceableArray

public final boolean writeSequenceableArray(Sequenceable[] values)

将 Sequenceable 对象数组写入 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的 Sequenceable 对象数组。

返回:

如果数组已写入 Parcel,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeSequenceableList

public final boolean writeSequenceableList(List<? extends Sequenceable> values)

将 Sequenceable 列表写入此 Parcel 实例。

此列表中的元素类型必须是实现了 Sequenceable 的东西。 调用readSequenceableList(java.lang.Class)方法读取列表时,确保values的元素是同一类型。

参数:

参数名称 参数描述
values 指示要写入的 Sequenceable 列表。

返回:

如果 Sequenceable 列表写入成功,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeSequenceableMap

public final boolean writeSequenceableMap(Map<String,? extends Sequenceable> values)

将 Map 对象写入此 Parcel 实例。

在 Map 对象中,键是 String 类型,值来自实现了 Sequenceable 的东西。 调用readSequenceableMap(java.lang.Class)方法读取map时,需要保证values的元素类型相同。

参数:

参数名称 参数描述
values 指示要写入的 Map 对象。

返回:

如果 Map 对象写入成功,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

readByteArray

public final void readByteArray(byte[] val)

从 Parcel 实例中读取一个字节数组。

参数:

参数名称 参数描述
val 指示要读取的字节数组。

Throws:

Throw名称 Throw描述
ParcelException 如果读取字节数组失败会抛出这个异常。

readByteArray

public final byte[] readByteArray()

从 Parcel 实例中读取一个字节数组。

返回:

返回一个字节数组。

getBytes

public final byte[] getBytes()

从 Parcel 实例中读取所有字节。

此方法与 readByteArray 方法不同。 在该方法中,Parcel 不能调用其他方法读取数据,该方法只能读取使用 [writeBytes(byte]) 写入的数据。

返回:

返回字节。

readShortArray

public final void readShortArray(short[] val)

从 Parcel 实例中读取一个短整数数组。

参数:

参数名称 参数描述
val 指示要读取的短整数数组。

Throws:

Throw名称 Throw描述
ParcelException 如果读取短数组失败,则抛出此异常。

readShortArray

public final short[] readShortArray()

从 Parcel 实例中读取一个短整数数组。

返回:

返回一个短整数数组。

readIntArray

public final void readIntArray(int[] val)

从 Parcel 实例中读取一个整数数组。

参数:

参数名称 参数描述
val 指示要读取的整数数组。

Throws:

Throw名称 Throw描述
ParcelException 如果读取整数数组失败,则抛出此异常。

readIntArray

public final int[] readIntArray()

从 Parcel 实例中读取一个整数数组。

返回:

返回一个整数数组。

readLongArray

public final void readLongArray(long[] val)

从 Parcel 实例中读取一个长整数数组。

参数:

参数名称 参数描述
val 指示要读取的长整数数组。

Throws:

Throw名称 Throw描述
ParcelException 如果读取长数组失败,则抛出此异常。

readLongArray

public final long[] readLongArray()

从 Parcel 实例中读取一个长整数数组。

返回:

返回一个长整数数组。

readFloatArray

public final void readFloatArray(float[] val)

从 Parcel 实例中读取一个浮点数组。

参数:

参数名称 参数描述
val 指示要读取的浮点数组。

Throws:

Throw名称 Throw描述
ParcelException 如果读取浮点数组失败,则抛出此异常。

readFloatArray

public final float[] readFloatArray()

从 Parcel 实例中读取一个浮点数组。

返回:

返回一个浮点数组。

readDoubleArray

public final void readDoubleArray(double[] val)

从 Parcel 实例中读取一个双精度浮点数组。

参数:

参数名称 参数描述
val 指示要读取的双精度浮点数组。

Throws:

Throw名称 Throw描述
ParcelException 如果读取双精度数组失败,则抛出此异常。

readDoubleArray

public final double[] readDoubleArray()

从 Parcel 实例中读取一个双精度浮点数组。

返回:

返回一个双精度浮点数组。

readBooleanArray

public final void readBooleanArray(boolean[] val)

从 Parcel 实例中读取一个布尔数组。

参数:

参数名称 参数描述
val 指示要读取的布尔数组。

Throws:

Throw名称 Throw描述
ParcelException 如果读取布尔数组失败,则抛出此异常。

readBooleanArray

public final boolean[] readBooleanArray()

从 Parcel 实例中读取一个布尔数组。

返回:

返回一个布尔数组。

readCharArray

public final void readCharArray(char[] val)

从 Parcel 实例中读取单个字符数组。

参数:

参数名称 参数描述
val 指示要读取的单个字符数组。

Throws:

Throw名称 Throw描述
ParcelException 如果读取 char 数组失败,则抛出此异常。

readCharArray

public final char[] readCharArray()

从 Parcel 实例中读取单个字符数组。

返回:

返回单个字符数组。

readStringArray

public final void readStringArray(String[] val)

从 Parcel 实例中读取一个字符串数组。

参数:

参数名称 参数描述
val 指示要读取的字符串数组。

Throws:

Throw名称 Throw描述
ParcelException 如果读取字符串数组失败,则抛出此异常。

readStringArray

public final String[] readStringArray()

从 Parcel 实例中读取一个字符串数组。

返回:

返回一个字符串数组。

readStringList

public final ListString readStringList()

从 Parcel 读取字符串列表。

您可以使用此方法读取 writeStringList(java.util.List) 和 [writeStringArray(java.lang.String]) 写入 Parcel 的字符串。

返回:

返回一个只读字符串列表对象。

readSequenceableArray

public final void readSequenceableArray(Sequenceable[] val)

从 Parcel 实例中读取一个 Sequenceable 对象数组。

参数:

参数名称 参数描述
val 指示要读取的 Sequenceable 对象数组。

Throws:

Throw名称 Throw描述
ParcelException 如果读取可排序数组失败,则抛出此异常。

readSequenceableList

public final <T extends Sequenceable> List<T> readSequenceableList(Class<T> clz)

从此 Parcel 实例中读取指定类型的 Sequenceable 对象列表。

提供 Sequenceable 对象的类必须具有 Sequenceable.Producer 类型的静态成员变量 CREATOR。

参数:

参数名称 参数描述
clz 指示要读取的 Sequenceable 对象的类型。

返回:

返回 Sequenceable 对象的列表。

Throws:

Throw名称 Throw描述
ParcelException 如果无法获取 Sequenceable 的 CREATOR,则抛出此异常。

readSequenceableMap

public final <T extends Sequenceable> MapString,T readSequenceableMap(Class<T> valueType)

从此 Parcel 实例中读取 Map 对象。 在 Map 对象中,键是 String 类型,值来自实现了 Sequenceable 的东西。

参数:

参数名称 参数描述
valueType 指示要读取的 Map 对象的值类型。

返回:

返回一个 Map 对象,其键是 String 类型,值来自实现 Sequenceable 的东西。

writeTypedSequenceable

public final void writeTypedSequenceable(Sequenceable sequenceable)

使用 Sequenceable.Producer#createFromParcel(Parcel) 将 Sequenceable 对象写入 Parcel 实例。

此方法还将 Sequenceable 对象的类名写入 Parcel。 类名将用于从 Parcel 中恢复 Sequenceable 对象。

参数:

参数名称 参数描述
sequenceable 指示已实现 Sequenceable.Producer#createFromParcel 的 Sequenceable 对象。

Throws:

Throw名称 Throw描述
ParcelException 如果在数据写入过程中发生异常,则抛出此异常。

createSequenceable

public final <T extends Sequenceable> T createSequenceable()

使用 Sequenceable.Producer#createFromParcel(Parcel) 从 Parcel 创建特定的 Sequenceable 对象。

该方法根据writeTypedSequenceable(ohos.utils.Sequenceable)写入的类名恢复Sequenceable对象。

返回:

返回新创建的 Sequenceable 对象; 如果无法恢复 Sequenceable 对象,则返回 null。

Throws:

Throw名称 Throw描述
ParcelException 如果在数据读取过程中发生异常,则抛出此异常。

createSequenceable

public final <T extends Sequenceable> T createSequenceable(ClassLoader classLoader)

使用 Sequenceable.Producer#createFromParcel(Parcel) 从 Parcel 创建特定的 Sequenceable 对象。

该方法根据writeTypedSequenceable(ohos.utils.Sequenceable)写入的类名恢复Sequenceable对象。

类型参数:

类型参数名称 类型参数描述
T 表示扩展 Sequenceable 的类。

参数:

参数名称 参数描述
classLoader 表示用于加载 Sequenceable 类的类加载器。

返回:

返回新创建的 Sequenceable 对象; 如果无法恢复 Sequenceable 对象,则返回 null。

writeTypedSequenceableArray

public final <T extends Sequenceable> void writeTypedSequenceableArray(T[] values)

使用 Sequenceable.Producer#createFromParcel(Parcel) 将 Sequenceable 对象数组写入 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的 Sequenceable 对象数组。

Throws:

Throw名称 Throw描述
ParcelException 如果在数据写入过程中发生异常,则抛出此异常。

writeSerializable

public final void writeSerializable(Serializable object)

将可序列化对象写入此 Parcel 实例。

参数:

参数名称 参数描述
object 指示要写入的可序列化对象。

Throws:

Throw名称 Throw描述
ParcelException 如果对象无法序列化或发生 I/O 错误,则引发此异常。

readSerializable

public final <T extends Serializable> T readSerializable(Class<T> clz)

从此 Parcel 实例中读取一个可序列化的对象。

参数:

参数名称 参数描述
clz 指示要读取的可序列化对象的类型。

返回:

返回已读取的可序列化对象; 如果无法读取可序列化对象,则返回 null。

Throws:

Throw名称 Throw描述
ParcelException 如果要读取的可序列化对象的类型与 clz 不匹配或发生 I/O 错误,则抛出此异常。

createSequenceableArray

public final Sequenceable[] createSequenceableArray()

使用 Sequenceable.Producer#createFromParcel(Parcel) 从 Parcel 创建一个特定的 Sequenceable 对象数组

返回:

返回新创建的 Sequenceable 对象数组; 如果无法恢复 Sequenceable 对象数组,则返回 null。

Throws:

Throw名称 Throw描述
ParcelException 如果在数据读取过程中发生异常,则抛出此异常。

readList

public List<?> readList()

从此 Parcel 实例中读取对象列表。

返回:

返回对象列表。

Throws:

Throw名称 Throw描述
ParcelException 如果列表包含 Parcel 不支持的对象类型,则引发此异常。

writeList

public void writeList(List<?> values)

将对象列表写入此 Parcel 实例。

参数:

参数名称 参数描述
values 指示要写入的对象列表。

Throws:

Throw名称 Throw描述
ParcelException 如果列表包含 Parcel 不支持的对象类型或此 Parcel 中的容量不足,则抛出此异常,异常消息:ParcelException#NO_CAPACITY_ERROR。

readMap

public Map<?,?> readMap()

从此 Parcel 实例中读取 Map 对象。

返回:

返回一个 map 对象。

Throws:

Throw名称 Throw描述
ParcelException 如果 Map 对象包含 Parcel 不支持的键值对类型,则抛出此异常。

writeMap

public void writeMap(Map<?,?> values)

将 Map 对象写入此 Parcel 实例。

Map 对象中的键值对类型必须是 Parcel 支持的。 否则会抛出异常。

参数:

参数名称 参数描述
values 指示要写入的 Map 对象。

Throws:

Throw名称 Throw描述
ParcelException 如果 Map 对象包含 Parcel 不支持的键值对类型,则抛出此异常
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeMap

public final void writeMap(Map<?,?> values, boolean isCross)

通过支持跨平台将 Map 对象写入此 Parcel 实例。

Map 对象中的键值对类型必须是 Parcel 支持的。 否则会抛出异常。

参数:

参数名称 参数描述
values 指示要写入的 Map 对象。
isCross 表示跨平台的标志。

Throws:

Throw名称 Throw描述
ParcelException 如果 Map 对象包含 Parcel 不支持的键值对类型,则抛出此异常
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writeValue

public final void writeValue(Object value)

将对象写入此 Parcel 实例。

这是一种无需声明类型即可编写对象的通用方法。 请注意以下事项:

  • 要写入的对象类型必须由 Parcel 支持。
  • 您只能使用 readValue() 来读取已写入的对象。

参数:

参数名称 参数描述
value 指示要写入的对象。

Throws:

Throw名称 Throw描述
ParcelException 如果 Parcel 不支持对象类型,则抛出此异常
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

readValue

public final Object readValue()

从此 Parcel 实例中读取一个对象。

该方法只能读取 writeValue(java.lang.Object) 写入的对象。

返回:

返回对象。

Throws:

Throw名称 Throw描述
ParcelException 如果 Parcel 不支持对象类型,则引发此异常。

appendFrom

public final boolean appendFrom(Parcel other)

将指定 Parcel 对象的序列化值附加到此 Parcel 实例。

参数:

参数名称 参数描述
other 指示要附加的 Parcel 对象。

返回:

如果运算符成功,则返回 true,否则返回 false。

Throws:

Throw名称 Throw描述
NullPointerException 如果 other 为 null,则引发此异常。
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writePlainBooleanArray

public final boolean writePlainBooleanArray(PlainBooleanArray value)

将 PlainBooleanArray 对象写入此 Parcel 实例。

参数:

参数名称 参数描述
value 指示要写入的 PlainBooleanArray 对象。

返回:

如果 PlainBooleanArray 对象写入成功,则返回 true; 否则返回 false。

Throws:

Throw名称 Throw描述
NullPointerException 如果值为 null,则引发此异常。
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

readPlainBooleanArray

public final PlainBooleanArray readPlainBooleanArray()

从此 Parcel 实例中读取一个 PlainBooleanArray 对象。

返回:

返回 PlainBooleanArray 对象。

writePlainArray

public final <T> void writePlainArray(PlainArray<T> value)

将 PlainArray 对象写入此 Parcel 实例。

类型参数:

类型参数名称 类型参数描述
T 指示存储在 PlainArray 对象中的值的类型。

参数:

参数名称 参数描述
value 指示要写入的 PlainArray 对象。

Throws:

Throw名称 Throw描述
NullPointerException 如果值为 null,则引发此异常。
ParcelException 如果列表包含 Parcel 不支持的对象类型,则引发此异常。
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

readPlainArray

public final <T> PlainArray<T> readPlainArray(Class<T> clzType)

从此 Parcel 实例中读取一个 PlainArray 对象。

类型参数:

类型参数名称 类型参数描述
T 指示存储在 PlainArray 对象中的值的类型。

返回:

返回 PlainArray 对象。

Throws:

Throw名称 Throw描述
ParcelException 如果列表包含 Parcel 不支持的对象类型,则引发此异常。

writeParcelableEx

public final void writeParcelableEx(ParcelableEx val)

将 ParcelableEx 对象写入此 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的 ParcelableEx 对象。

Throws:

Throw名称 Throw描述
ParcelException 如果 marshallingEx 操作失败。
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

writePacMapEx

public final void writePacMapEx(PacMapEx val)

将 PacMapEx 对象写入此 Parcel 实例。

参数:

参数名称 参数描述
val 指示要写入的 PacMapEx 对象。

Throws:

Throw名称 Throw描述
ParcelException 如果编组操作失败。
ParcelException 当这个包裹的容量不足时,异常消息:ParcelException#NO_CAPACITY_ERROR。

readPacMapEx

public final void readPacMapEx(PacMapEx pacMapEx)

从此 Parcel 对象中读取 PacMapEx 对象。

参数:

参数名称 参数描述
pacMapEx 指示读取数据将被解组到的 PacMapEx 对象。

Throws:

Throw名称 Throw描述
ParcelException 如果解组操作失败。

readParcelableEx

public final ParcelableEx readParcelableEx(ClassLoader loader)

从此 Parcel 实例中读取 ParcelableEx 对象。

如果 Parcel 实例不包含类名或类名不能用于调用无参构造函数创建 ParcelableEx 对象,则读取操作失败。

参数:

参数名称 参数描述
loader 如果需要,ClassLoader 用于创建自定义类对象。

返回:

如果操作成功,则返回未编组的 ParcelableEx 对象; 否则返回 null。

Throws:

Throw名称 Throw描述
ParcelException 如果解组操作失败。

addAppClassLoader

public void addAppClassLoader(ClassLoader newClassLoader)

添加第三方 ClassLoader 用于实例初始化。

如果您需要编组或解组自定义 Sequenceable 实例,请添加您自己的 ClassLoader。

参数:

参数名称 参数描述
newClassLoader 指示用于初始化应用程序的 Sequenceable 实例的 ClassLoader。
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号