新聞中心
MessageParcel

java.lang.Object
|---ohos.utils.Parcel
|---|---ohos.rpc.MessageParcel
public class MessageParcel
extends Parcel繼承自 Parcel 類并提供管理 MessageParcel 對(duì)象的方法。
此類提供讀寫對(duì)象、接口令牌、文件描述符和大數(shù)據(jù)的方法。
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| static void | closeFileDescriptor(FileDescriptor descriptor) | 禁用 MessageParcel 中的文件描述符。 |
| boolean | containFileDescriptors() | 檢查此 MessageParcel 對(duì)象是否包含文件描述符。 |
| static MessageParcel | create() | 創(chuàng)建一個(gè) MessageParcel 對(duì)象。 |
| static MessageParcel | create(long object) | 創(chuàng)建具有給定指針的 MessageParcel 對(duì)象。 |
| IRemoteObject[] | createRemoteObjectArray() | 創(chuàng)建一個(gè) IRemoteObject 對(duì)象數(shù)組。 |
| ListIRemoteObject | createRemoteObjectList() | 創(chuàng)建 IRemoteObject 對(duì)象的列表。 |
| static int | detachFd(FileDescriptor fileDescriptor) | 從 FileDescriptor 中分離本機(jī) fd。 |
| static FileDescriptor | dupFileDescriptor(FileDescriptor descriptor) | 獲得一個(gè)新的文件描述符,它是現(xiàn)有文件描述符的副本。 |
| protected void | finalize() | 當(dāng)垃圾收集確定不再有對(duì)該對(duì)象的引用時(shí),由對(duì)象上的垃圾收集器調(diào)用。 |
| int | getDataVersion() | 從 MessageParcel 對(duì)象返回?cái)?shù)據(jù)版本。 |
| static int | getFd(FileDescriptor fileDescriptor) | 從 FileDescriptor 讀取本機(jī) fd |
| static FileDescriptor | getFdFromDatagramSocket(DatagramSocket datagramSocket) | 從 DatagramSocket 讀取 FileDescriptor |
| int | getRawDataCapacity() | 獲取 MessageParcel 可以容納的最大原始數(shù)據(jù)量。 |
| static MessageParcel | obtain() | 創(chuàng)建一個(gè) MessageParcel 對(duì)象。 |
| static MessageParcel | obtain(long object) | 獲取具有給定指針的 MessageParcel 對(duì)象。 |
| Ashmem | readAshmem() | 從此 MessageParcel 中讀取 Ashmem 對(duì)象。 |
| void | readException() | 從 MessageParcel 中讀取異常。 |
| FileDescriptor | readFileDescriptor() | 從 MessageParcel 讀取文件描述符。 |
| String | readInterfaceToken() | 從 MessageParcel 讀取接口令牌。 |
| byte[] | readRawData(int size) | 從 MessageParcel 讀取原始數(shù)據(jù)。 |
| IRemoteObject | readRemoteObject() | 從 MessageParcel 讀取遠(yuǎn)程對(duì)象。 |
| void | readRemoteObjectArray(IRemoteObject[] objects) | 從 MessageParcel 中讀取一組 IRemoteObject 對(duì)象。 |
| void | readRemoteObjectList(ListIRemoteObject objects) | 從 MessageParcel 中讀取 IRemoteObject 對(duì)象的列表。 |
| void | reclaim() | 將 MessageParcel 對(duì)象添加到緩存池。 |
| void | updateDataVersion(IRemoteObject object) | 將遠(yuǎn)程對(duì)象數(shù)據(jù)版本更新為 MessageParcel 對(duì)象。 |
| boolean | writeAshmem(Ashmem ashmem) | 將指定的 Ashmem 對(duì)象寫入此 MessageParcel。 |
| void | writeException(Exception exception) | 將異常寫入 MessageParcel。 |
| boolean | writeFileDescriptor(FileDescriptor descriptor) | 序列化文件描述符并將其寫入 MessageParcel。 |
| boolean | writeInterfaceToken(String token) | 將接口令牌寫入 MessageParcel 對(duì)象。 |
| void | writeNoException() | 不向 MessageParcel 寫入異常。 |
| boolean | writeRawData(byte[] rawData, int size) | 將要發(fā)送到遠(yuǎn)程進(jìn)程的原始數(shù)據(jù)寫入 MessageParcel 對(duì)象。 |
| boolean | writeRemoteObject(IRemoteObject object) | 序列化遠(yuǎn)程對(duì)象并將其寫入 MessageParcel 對(duì)象。 |
| boolean | writeRemoteObjectArray(IRemoteObject[] objects) | 將 IRemoteObject 對(duì)象數(shù)組寫入 MessageParcel。 |
| boolean | writeRemoteObjectList(ListIRemoteObject objects) | 將 IRemoteObject 對(duì)象列表寫入 MessageParcel。 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 從類 ohos.utils.Parcel 繼承的方法 |
|---|
| addAppClassLoader, appendFrom, createSequenceable, createSequenceable, createSequenceableArray, flushBuffer, getBytes, getCapacity, getReadableBytes, getReadPosition, getSize, getWritableBytes, getWritePosition, readBoolean, readBooleanArray, readBooleanArray, readByte, readByteArray, readByteArray, readChar, readCharArray, readCharArray, readDouble, readDoubleArray, readDoubleArray, readFloat, readFloatArray, readFloatArray, readInt, readIntArray, readIntArray, readList, readLong, readLongArray, readLongArray, readMap, readPacMapEx, readParcelableEx, readPlainArray, readPlainBooleanArray, readSequenceable, readSequenceableArray, readSequenceableList, readSequenceableMap, readSerializable, readShort, readShortArray, readShortArray, readString, readStringArray, readStringArray, readStringList, readValue, rewindRead, rewindWrite, setCapacity, setSize, writeBoolean, writeBooleanArray, writeByte, writeByteArray, writeBytes, writeChar, writeCharArray, writeDouble, writeDoubleArray, writeFloat, writeFloatArray, writeInt, writeIntArray, writeList, writeLong, writeLongArray, writeMap, writeMap, writePacMapEx, writeParcelableEx, writePlainArray, writePlainBooleanArray, writeSequenceable, writeSequenceableArray, writeSequenceableList, writeSequenceableMap, writeSerializable, writeShort, writeShortArray, writeString, writeStringArray, writeStringList, writeTypedSequenceable, writeTypedSequenceableArray, writeValue |
方法詳情
obtain
public static final MessageParcel obtain()
創(chuàng)建一個(gè) MessageParcel 對(duì)象。
返回:
返回創(chuàng)建的 MessageParcel 對(duì)象。
create
public static final MessageParcel create()
創(chuàng)建一個(gè) MessageParcel 對(duì)象。
返回:
返回創(chuàng)建的 MessageParcel 對(duì)象。
finalize
protected void finalize() 拋出 Throwable
從類復(fù)制的描述:對(duì)象
當(dāng)垃圾收集確定不再有對(duì)該對(duì)象的引用時(shí),由對(duì)象上的垃圾收集器調(diào)用。子類覆蓋 finalize 方法以釋放系統(tǒng)資源或執(zhí)行其他清理。
finalize 的一般約定是,當(dāng) Java? 虛擬機(jī)確定不再有任何方法可以讓任何尚未終止的線程訪問(wèn)此對(duì)象時(shí)調(diào)用它,除非是由于某個(gè)操作由準(zhǔn)備完成的其他對(duì)象或類的完成所采取。 finalize 方法可以采取任何行動(dòng),包括使該對(duì)象再次可供其他線程使用;然而,finalize 的通常目的是在對(duì)象被不可撤銷地丟棄之前執(zhí)行清理操作。例如,代表輸入/輸出連接的對(duì)象的 finalize 方法可能會(huì)執(zhí)行顯式 I/O 事務(wù)以在對(duì)象被永久丟棄之前中斷連接。
Object 類的 finalize 方法不執(zhí)行任何特殊操作;它只是正常返回。 Object 的子類可以覆蓋這個(gè)定義。
Java 編程語(yǔ)言不保證哪個(gè)線程將為任何給定對(duì)象調(diào)用 finalize 方法。但是,可以保證調(diào)用 finalize 的線程在調(diào)用 finalize 時(shí)不會(huì)持有任何用戶可見的同步鎖。如果 finalize 方法拋出未捕獲的異常,則忽略該異常并終止該對(duì)象的終結(jié)。
在為一個(gè)對(duì)象調(diào)用 finalize 方法之后,不會(huì)采取進(jìn)一步的行動(dòng),直到 Java 虛擬機(jī)再次確定沒有任何方法可以讓任何尚未終止的線程訪問(wèn)該對(duì)象,包括可能的行動(dòng)由其他準(zhǔn)備完成的對(duì)象或類,此時(shí)該對(duì)象可能被丟棄。
對(duì)于任何給定的對(duì)象,Java 虛擬機(jī)永遠(yuǎn)不會(huì)多次調(diào)用 finalize 方法。
finalize 方法拋出的任何異常都會(huì)導(dǎo)致該對(duì)象的終結(jié)被暫停,否則會(huì)被忽略。
覆蓋:
在 Parcel 類中完成
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| Throwable | 此方法引發(fā)的異常 |
obtain
public static MessageParcel obtain(long object)
獲取具有給定指針的 MessageParcel 對(duì)象。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| object | 指示 MessageParcel 的地址。 |
返回:
如果在緩存池中找到具有指定索引的 MessageParcel 對(duì)象,則返回該對(duì)象; 如果未找到,則返回具有指定索引的新 MessageParcel 對(duì)象。
create
public static MessageParcel create(long object)
創(chuàng)建具有給定指針的 MessageParcel 對(duì)象。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| object | 指示 MessageParcel 的地址。 |
返回:
如果在緩存池中找到具有給定指針的 MessageParcel 對(duì)象,則返回該對(duì)象; 如果未找到,則返回具有給定指針的新 MessageParcel 對(duì)象。
reclaim
public final void reclaim()
將 MessageParcel 對(duì)象添加到緩存池。
此方法用于清除不再使用的 MessageParcel 對(duì)象。
覆蓋:
在類包裹中回收
updateDataVersion
public void updateDataVersion(IRemoteObject object)
將遠(yuǎn)程對(duì)象數(shù)據(jù)版本更新為 MessageParcel 對(duì)象。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| object | 指示寫入 MessageParcel 的遠(yuǎn)程對(duì)象及其數(shù)據(jù)版本。 |
getDataVersion
public int getDataVersion()
從 MessageParcel 對(duì)象返回?cái)?shù)據(jù)版本。
返回:
從 MessageParcel 返回?cái)?shù)據(jù)版本。
writeRemoteObject
public boolean writeRemoteObject(IRemoteObject object)
序列化遠(yuǎn)程對(duì)象并將其寫入 MessageParcel 對(duì)象。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| object | 指示要序列化并寫入 MessageParcel 的遠(yuǎn)程對(duì)象。 |
返回:
如果操作成功,則返回 true; 否則返回 false。
readRemoteObject
public IRemoteObject readRemoteObject()
從 MessageParcel 讀取遠(yuǎn)程對(duì)象。
此方法用于反序列化 MessageParcel 對(duì)象以生成 IRemoteObject。
遠(yuǎn)程對(duì)象按照它們寫入 MessageParcel 的順序讀取。
返回:
返回 IRemoteObject。
writeInterfaceToken
public boolean writeInterfaceToken(String token)
將接口令牌寫入 MessageParcel 對(duì)象。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| token | 表示接口令牌。 |
返回:
如果操作成功,則返回 true; 否則返回 false。
readInterfaceToken
public String readInterfaceToken()
從 MessageParcel 讀取接口令牌。
接口標(biāo)記按照它們寫入 MessageParcel 的順序讀取。
返回:
返回接口令牌。
writeFileDescriptor
public boolean writeFileDescriptor(FileDescriptor descriptor)
序列化文件描述符并將其寫入 MessageParcel。
在當(dāng)前版本中,此方法不適用于跨設(shè)備通信。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| descriptor | 指示文件描述符。 |
返回:
如果操作成功,則返回 true; 否則返回 false。
readFileDescriptor
public FileDescriptor readFileDescriptor()
從 MessageParcel 讀取文件描述符。
文件描述符按照它們寫入 MessageParcel 的順序讀取。
在當(dāng)前版本中,此方法不適用于跨設(shè)備通信。
返回:
返回文件描述符。
writeRawData
public boolean writeRawData(byte[] rawData, int size)
將要發(fā)送到遠(yuǎn)程進(jìn)程的原始數(shù)據(jù)寫入 MessageParcel 對(duì)象。
如果遠(yuǎn)程進(jìn)程在當(dāng)前設(shè)備上運(yùn)行,原始數(shù)據(jù)將通過(guò)共享內(nèi)存?zhèn)鬏敗?如果遠(yuǎn)程進(jìn)程在對(duì)等設(shè)備上運(yùn)行,則原始數(shù)據(jù)通過(guò)套接字等跨設(shè)備通道傳輸。
每個(gè) MessageParcel 只能寫入一組原始數(shù)據(jù)。 在跨設(shè)備情況下,原始數(shù)據(jù)只能按順序發(fā)送。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| rawData | 指示要發(fā)送到遠(yuǎn)程進(jìn)程的原始數(shù)據(jù)。 通過(guò) IPC 最多可以發(fā)送 128 Mb 的原始數(shù)據(jù),在 RPC 情況下最大為 128 Mb - 64byte。 如果數(shù)據(jù)大小大于最大值,則返回 false。 您必須自己管理數(shù)據(jù)內(nèi)存的生命周期。 |
| size | 指示要發(fā)送的原始數(shù)據(jù)的大小。 |
返回:
如果操作成功,則返回 true; 否則返回 false。
readRawData
public byte[] readRawData(int size)
從 MessageParcel 讀取原始數(shù)據(jù)。
要讀取的原始數(shù)據(jù)的大小必須與寫入 MessageParcel 的原始數(shù)據(jù)的大小相同。
原始數(shù)據(jù)按照寫入 MessageParcel 的順序讀取。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| size | 指示要讀取的原始數(shù)據(jù)的大小。 |
返回:
返回原始數(shù)據(jù)(以字節(jié)為單位)。 數(shù)據(jù)內(nèi)存的生命周期必須與 MessageParcel 對(duì)象的生命周期相同。
getRawDataCapacity
public int getRawDataCapacity()
獲取 MessageParcel 可以容納的最大原始數(shù)據(jù)量。
返回:
返回 MessageParcel 可以容納的最大原始數(shù)據(jù)量,即 128 Mb。
closeFileDescriptor
public static void closeFileDescriptor(FileDescriptor descriptor)
禁用 MessageParcel 中的文件描述符。
在當(dāng)前版本中,此方法不適用于跨設(shè)備通信。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| descriptor | 指示要禁用的文件描述符。 |
dupFileDescriptor
public static FileDescriptor dupFileDescriptor(FileDescriptor descriptor)
獲得一個(gè)新的文件描述符,它是現(xiàn)有文件描述符的副本。
新文件描述符的狀態(tài)與現(xiàn)有文件描述符的狀態(tài)相同。
調(diào)用此方法不會(huì)關(guān)閉輸入文件描述符。 您負(fù)責(zé)關(guān)閉返回的新文件描述符。
在當(dāng)前版本中,此方法不適用于跨設(shè)備通信。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| descriptor | 指示現(xiàn)有文件描述符。 |
返回:
返回新的文件描述符。
containFileDescriptors
public boolean containFileDescriptors()
檢查此 MessageParcel 對(duì)象是否包含文件描述符。
在調(diào)用 writeFileDescriptor 或 writeRawData 方法后,MessageParcel 對(duì)象將包含文件描述符。
返回:
如果此 MessageParcel 對(duì)象包含文件描述符,則返回 true; 否則返回 false。
createRemoteObjectArray
public IRemoteObject[] createRemoteObjectArray()
創(chuàng)建一個(gè) IRemoteObject 對(duì)象數(shù)組。
此方法用于從 MessageParcel 中讀取 IRemoteObject 對(duì)象并創(chuàng)建一個(gè) IRemoteObject 對(duì)象數(shù)組。
返回:
返回 IRemoteObject 對(duì)象的數(shù)組。 陣列的生命周期取決于您的應(yīng)用程序。
createRemoteObjectList
public ListIRemoteObject createRemoteObjectList()
創(chuàng)建 IRemoteObject 對(duì)象的列表。
此方法用于從 MessageParcel 中讀取 IRemoteObject 對(duì)象并創(chuàng)建 IRemoteObject 對(duì)象列表。
返回:
返回 IRemoteObject 對(duì)象的列表。 列表的生命周期取決于您的應(yīng)用程序。
writeRemoteObjectArray
public boolean writeRemoteObjectArray(IRemoteObject[] objects)
將 IRemoteObject 對(duì)象數(shù)組寫入 MessageParcel。
您可以使用 createRemoteObjectArray() 或 [readRemoteObjectArray(ohos.rpc.IRemoteObject]) 方法從 MessageParcel 中讀取 IRemoteObject 對(duì)象數(shù)組。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| objects | 指示要寫入 MessageParcel 的 IRemoteObject 對(duì)象數(shù)組。 |
返回:
如果 IRemoteObject 對(duì)象數(shù)組成功寫入 MessageParcel,則返回 true; 如果 objects 為 null 或數(shù)組無(wú)法寫入 MessageParcel,則返回 false。
writeRemoteObjectList
public boolean writeRemoteObjectList(ListIRemoteObject objects)
將 IRemoteObject 對(duì)象列表寫入 MessageParcel。
您可以使用 createRemoteObjectList() 或 readRemoteObjectList(java.util.List) 方法從 MessageParcel 中讀取 IRemoteObject 對(duì)象列表。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| objects | 指示要寫入 MessageParcel 的 IRemoteObject 對(duì)象的列表。 |
返回:
如果 IRemoteObject 對(duì)象列表成功寫入 MessageParcel,則返回 true; 如果 objects 為 null 或列表無(wú)法寫入 MessageParcel,則返回 false。
readRemoteObjectArray
public void readRemoteObjectArray(IRemoteObject[] objects)
從 MessageParcel 中讀取一組 IRemoteObject 對(duì)象。
使用此方法時(shí),您的應(yīng)用程序需要傳遞要從 MessageParcel 中讀取的 IRemoteObject 對(duì)象數(shù)組。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| objects | 指示應(yīng)用程序要從 MessageParcel 中讀取的 IRemoteObject 對(duì)象數(shù)組。 如果此數(shù)組的長(zhǎng)度不等于實(shí)際從 MessageParcel 讀取的 IRemoteObject 對(duì)象的數(shù)量,則將返回您的應(yīng)用程序傳遞的 IRemoteObject 對(duì)象數(shù)組。 |
readRemoteObjectList
public void readRemoteObjectList(ListIRemoteObject objects)
從 MessageParcel 中讀取 IRemoteObject 對(duì)象的列表。
使用此方法時(shí),您的應(yīng)用程序需要傳遞要從 MessageParcel 中讀取的 IRemoteObject 對(duì)象列表。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| objects | 指示您的應(yīng)用程序要從 MessageParcel 中讀取的 IRemoteObject 對(duì)象列表。 不管這個(gè)列表的長(zhǎng)度是大于還是小于從MessageParcel中實(shí)際讀取的IRemoteObject對(duì)象的個(gè)數(shù),都會(huì)返回一個(gè)從MessageParcel中實(shí)際讀取的IRemoteObject對(duì)象的列表。 |
writeException
public void writeException(Exception exception)
將異常寫入 MessageParcel。
支持的異常包括 SecurityException、IllegalArgumentException、NullPointerException、IllegalStateException、UnsupportedOperationException、IndexOutOfBoundsException、NegativeArraySizeException、ArrayStoreException、ClassCastException 和 RemoteException。 如果向 MessageParcel 寫入任何其他異常,將返回 RuntimeException。
此方法通常在響應(yīng)接收到的數(shù)據(jù)包時(shí)使用。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| exception | 指示寫入 MessageParcel 的異常。 |
writeNoException
public void writeNoException()
不向 MessageParcel 寫入異常。
readException
public void readException()
從 MessageParcel 中讀取異常。
將拋出異常讀取。
此方法通常在讀取響應(yīng)數(shù)據(jù)包時(shí)使用。
Throws:
| Throw 名稱 | Throw描述 |
|---|---|
| Exception | 引發(fā)從 MessageParcel 讀取的異常。 異??梢允?nbsp;SecurityException、IllegalArgumentException、NullPointerException、IllegalStateException、UnsupportedOperationException、IndexOutOfBoundsException、NegativeArraySizeException、ArrayStoreException、ClassCastException 或 RemoteException。 |
getFdFromDatagramSocket
public static FileDescriptor getFdFromDatagramSocket(DatagramSocket datagramSocket)
從 DatagramSocket 讀取 FileDescriptor
從指定的 DatagramSocket 創(chuàng)建一個(gè)新的文件描述符。 新的文件描述符保存了 DatagramSocket 中原始文件描述符的副本,因此您負(fù)責(zé)關(guān)閉返回的新文件描述符。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| datagramSocket | 指示要獲取 FileDescriptor 的 DatagramSocket。 |
返回:
返回一個(gè)文件描述符。
getFd
public static int getFd(FileDescriptor fileDescriptor)
從 FileDescriptor 讀取本機(jī) fd
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| fileDescriptor | 指示獲取 fd 的 FileDescriptor。 |
返回:
如果它不為空,則返回給定 FileDescriptor 的 fd; 否則返回 -1。
detachFd
public static int detachFd(FileDescriptor fileDescriptor)
從 FileDescriptor 中分離本機(jī) fd。
現(xiàn)在您有責(zé)任關(guān)閉本機(jī) fd 或發(fā)生 fd 泄漏。
當(dāng)描述符的原始創(chuàng)建者希望關(guān)閉 FileDescriptor 本身時(shí),您不能調(diào)用該方法。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| fileDescriptor | FileDescriptor 來(lái)分離 fd。 |
返回:
如果 fd 從給定的 FileDescriptor 中成功分離,則返回一個(gè) fd; 否則返回 -1。
writeAshmem
public boolean writeAshmem(Ashmem ashmem)
將指定的 Ashmem 對(duì)象寫入此 MessageParcel。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| ashmem | 指示要寫入此 MessageParcel 的 Ashmem 對(duì)象。 |
返回:
如果 Ashmem 對(duì)象成功寫入此 MessageParcel,則返回 true; 否則返回 false。
readAshmem
public Ashmem readAshmem()
從此 MessageParcel 中讀取 Ashmem 對(duì)象。
返回:
返回 Ashmem 對(duì)象。
文章標(biāo)題:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS MessageParcel
標(biāo)題鏈接:http://fisionsoft.com.cn/article/copdpso.html


咨詢
建站咨詢
