鴻蒙OS RemoteObject

2022-04-27 17:18 更新

RemoteObject

java.lang.Object

|---ohos.rpc.RemoteObject

public class RemoteObject
extends Object
implements IRemoteObject

實(shí)現(xiàn)遠(yuǎn)程對(duì)象。

服務(wù)提供者必須繼承這個(gè)類。

如果 RemoteObject 定義為匿名類、本地類或成員類而不是靜態(tài)單例類,則可能會(huì)發(fā)生潛在泄漏。

嵌套類摘要

從接口 ohos.rpc.IRemoteObject 繼承的嵌套類/接口
IRemoteObject.DeathRecipient

字段摘要

從接口 ohos.rpc.IRemoteObject 繼承的字段
DUMP_TRANSACTION, INTERFACE_TRANSACTION, MAX_TRANSACTION_ID, MIN_TRANSACTION_ID, PING_TRANSACTION

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
RemoteObject(String descriptor) 用于使用默認(rèn)接口描述符創(chuàng)建 RemoteObject 實(shí)例的構(gòu)造函數(shù)。

方法總結(jié)

修飾符和類型 方法 描述
boolean addDeathRecipient(IRemoteObject.DeathRecipient recipient, int flags) 注冊(cè)一個(gè)用于接收遠(yuǎn)程代理死亡通知的回調(diào)。
void attachLocalInterface(IRemoteBroker localInterface, String descriptor) 修改當(dāng)前 RemoteObject 的描述。
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) 將當(dāng)前接口的狀態(tài)轉(zhuǎn)儲(chǔ)到具有特定描述符的文件中。
void dump(FileDescriptor fd, String[] args) 將當(dāng)前接口的狀態(tài)轉(zhuǎn)儲(chǔ)到具有特定描述符的文件中。
protected void finalize() 當(dāng)垃圾收集確定不再有對(duì)該對(duì)象的引用時(shí),由對(duì)象上的垃圾收集器調(diào)用。
int getCallingPid() 獲取 RemoteProxy 對(duì)象的 PID。
int getCallingUid() 獲取 RemoteProxy 對(duì)象的 UID。
String getInterfaceDescriptor() 查詢接口描述符。
boolean isObjectDead() 檢查 RemoteObject 是否已失效。
boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) 設(shè)置接收請(qǐng)求的條目。
IRemoteBroker queryLocalInterface(String descriptor) 使用接口描述符查詢遠(yuǎn)程對(duì)象。
boolean removeDeathRecipient(IRemoteObject.DeathRecipient recipient, int flags) 取消注冊(cè)用于接收遠(yuǎn)程代理死亡通知的回調(diào)。
boolean sendRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) 向 peer 對(duì)象發(fā)送請(qǐng)求。
protected void slowPathDump(FileDescriptor fd, PrintWriter pw, String[] args) 使用給定的 PrintWriter 對(duì)象將數(shù)據(jù)異步轉(zhuǎn)儲(chǔ)到指定文件。
void slowPathDump(FileDescriptor fd, String[] args) 將數(shù)據(jù)異步轉(zhuǎn)儲(chǔ)到指定文件。
從類 java.lang.Object 繼承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

RemoteObject

public RemoteObject(String descriptor)

用于使用默認(rèn)接口描述符創(chuàng)建 RemoteObject 實(shí)例的構(gòu)造函數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
descriptor 指示用于創(chuàng)建 RemoteObject 實(shí)例的接口描述符。

方法詳情

queryLocalInterface

public IRemoteBroker queryLocalInterface(String descriptor)

使用接口描述符查詢遠(yuǎn)程對(duì)象。

指定者:

接口 IRemoteObject 中的 queryLocalInterface

參數(shù):

參數(shù)名稱 參數(shù)描述
descriptor 表示用于查詢遠(yuǎn)程對(duì)象的接口描述符。

返回:

返回與接口描述符匹配的遠(yuǎn)程對(duì)象; 如果沒有找到這樣的遠(yuǎn)程對(duì)象,則返回 null。

addDeathRecipient

public boolean addDeathRecipient(IRemoteObject.DeathRecipient recipient, int flags)

注冊(cè)一個(gè)用于接收遠(yuǎn)程代理死亡通知的回調(diào)。

指定者:

接口 IRemoteObject 中的 addDeathRecipient

參數(shù):

參數(shù)名稱 參數(shù)描述
recipient 表示要注冊(cè)的回調(diào)。
flags 表示死亡通知的標(biāo)志。

返回:

返回 false,因?yàn)椴恍枰嘶卣{(diào)。

removeDeathRecipient

public boolean removeDeathRecipient(IRemoteObject.DeathRecipient recipient, int flags)

取消注冊(cè)用于接收遠(yuǎn)程代理死亡通知的回調(diào)。

指定者:

接口 IRemoteObject 中的 removeDeathRecipient

參數(shù):

參數(shù)名稱 參數(shù)描述
recipient 指示要注銷的回調(diào)。
flags 表示死亡通知的標(biāo)志。

返回:

返回 false,因?yàn)椴恍枰嘶卣{(diào)。

getInterfaceDescriptor

public String getInterfaceDescriptor()

查詢接口描述符。

指定者:

接口 IRemoteObject 中的 getInterfaceDescriptor

返回:

返回接口描述符。

onRemoteRequest

public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) throws RemoteException

設(shè)置接收請(qǐng)求的條目。

該方法由遠(yuǎn)程服務(wù)提供者實(shí)現(xiàn)。 使用 IPC 時(shí),您需要使用自己的服務(wù)邏輯覆蓋此方法。

參數(shù):

參數(shù)名稱 參數(shù)描述
code 表示對(duì)端發(fā)送的服務(wù)請(qǐng)求碼。
data 表示對(duì)端發(fā)送的MessageParcel 對(duì)象。
reply 表示遠(yuǎn)程服務(wù)發(fā)送的響應(yīng)消息對(duì)象。 本地服務(wù)將響應(yīng)數(shù)據(jù)寫入 MessageParcel 對(duì)象。
option 指示操作是同步的還是異步的。

返回:

如果操作成功,則返回 true; 否則返回 false。

Throws:

Throw名稱 Throw描述
RemoteException 如果發(fā)生遠(yuǎn)程服務(wù)錯(cuò)誤,則拋出此異常。

sendRequest

public boolean sendRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) throws RemoteException

向 peer 對(duì)象發(fā)送請(qǐng)求。

如果對(duì)等對(duì)象和 RemoteObject 在同一設(shè)備上,則請(qǐng)求由 IPC 驅(qū)動(dòng)程序發(fā)送。 如果它們?cè)诓煌脑O(shè)備上,則請(qǐng)求由套接字驅(qū)動(dòng)程序發(fā)送。

指定者:

接口 IRemoteObject 中的 sendRequest

參數(shù):

參數(shù)名稱 參數(shù)描述
code 表示請(qǐng)求的消息代碼。
data 表示存儲(chǔ)待發(fā)送數(shù)據(jù)的MessageParcel 對(duì)象。
reply 指示接收響應(yīng)數(shù)據(jù)的 MessageParcel 對(duì)象。
option 指示同步(默認(rèn))或異步請(qǐng)求。

返回:

如果操作成功,則返回 true; 否則返回 false。

Throws:

Throw名稱 Throw描述
RemoteException 如果發(fā)生遠(yuǎn)程服務(wù)錯(cuò)誤,則拋出此異常。

getCallingPid

public int getCallingPid()

獲取 RemoteProxy 對(duì)象的 PID。

返回:

返回 RemoteProxy 對(duì)象的 PID。

getCallingUid

public int getCallingUid()

獲取 RemoteProxy 對(duì)象的 UID。

返回:

返回 RemoteProxy 對(duì)象的 UID。

dump

protected void dump(FileDescriptor fd, PrintWriter pw, String[] args)

將當(dāng)前接口的狀態(tài)轉(zhuǎn)儲(chǔ)到具有特定描述符的文件中。

參數(shù):

參數(shù)名稱 參數(shù)描述
fd 表示目標(biāo)文件的描述符。
pw 將對(duì)象的格式化表示打印到輸出流。
args 以字符串形式表示該方法的參數(shù)。

Throws:

Throw名稱 Throw描述
RemoteException 如果打開 FileOutputStream 或?qū)?shù)據(jù)寫入 FileOutputStream 時(shí)發(fā)生錯(cuò)誤,則拋出此異常。

slowPathDump

protected void slowPathDump(FileDescriptor fd, PrintWriter pw, String[] args)

使用給定的 PrintWriter 對(duì)象將數(shù)據(jù)異步轉(zhuǎn)儲(chǔ)到指定文件。

此方法僅適用于同一設(shè)備上的數(shù)據(jù)轉(zhuǎn)儲(chǔ)。

您需要重寫此方法以定義要轉(zhuǎn)儲(chǔ)到文件的數(shù)據(jù)。 轉(zhuǎn)儲(chǔ)完成后,您需要關(guān)閉文件描述符。

參數(shù):

參數(shù)名稱 參數(shù)描述
fd 表示目標(biāo)文件的文件描述符。
pw 指示用于將數(shù)據(jù)轉(zhuǎn)儲(chǔ)到目標(biāo)文件的 PrintWriter 對(duì)象,禁用自動(dòng)刷新。
args 指示要轉(zhuǎn)儲(chǔ)的參數(shù)(字符串?dāng)?shù)組)。

dump

public void dump(FileDescriptor fd, String[] args) throws RemoteException

將當(dāng)前接口的狀態(tài)轉(zhuǎn)儲(chǔ)到具有特定描述符的文件中。

指定者:

在接口 IRemoteObject 中轉(zhuǎn)儲(chǔ)

參數(shù):

參數(shù)名稱 參數(shù)描述
fd 表示目標(biāo)文件的描述符。
args 以字符串形式表示該方法的參數(shù)。

Throws:

Throw名稱 Throw描述
RemoteException 如果打開 FileOutputStream 或?qū)?shù)據(jù)寫入 FileOutputStream 時(shí)發(fā)生錯(cuò)誤,則拋出此異常。

slowPathDump

public void slowPathDump(FileDescriptor fd, String[] args) throws RemoteException

將數(shù)據(jù)異步轉(zhuǎn)儲(chǔ)到指定文件。

此方法僅適用于同一設(shè)備上的數(shù)據(jù)轉(zhuǎn)儲(chǔ)。

或者,您可以覆蓋 [slowPathDump(java.io.FileDescriptor,java.io.PrintWriter,java.lang.String]) 方法來定義要轉(zhuǎn)儲(chǔ)到文件的數(shù)據(jù)。 轉(zhuǎn)儲(chǔ)完成后,您需要關(guān)閉文件描述符。

指定者:

接口 IRemoteObject 中的 slowPathDump

參數(shù):

參數(shù)名稱 參數(shù)描述
fd 表示目標(biāo)文件的文件描述符。
args 指示要轉(zhuǎn)儲(chǔ)的參數(shù)(字符串?dāng)?shù)組)。

Throws:

Throw名稱 Throw描述
RemoteException 如果轉(zhuǎn)儲(chǔ)命令發(fā)送失敗或轉(zhuǎn)儲(chǔ)過程中發(fā)生錯(cuò)誤,則拋出此異常。

finalize

protected void finalize() throws Throwable

從類復(fù)制的描述:對(duì)象

當(dāng)垃圾收集確定不再有對(duì)該對(duì)象的引用時(shí),由對(duì)象上的垃圾收集器調(diào)用。子類覆蓋 finalize 方法以釋放系統(tǒng)資源或執(zhí)行其他清理。

finalize 的一般約定是,當(dāng) Java? 虛擬機(jī)確定不再有任何方法可以讓任何尚未終止的線程訪問此對(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ī)再次確定沒有任何方法可以讓任何尚未終止的線程訪問該對(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ì)被忽略。

覆蓋:

在類 Object 中完成

Throws:

Throw名稱 Throw描述
Throwable 此方法引發(fā)的異常

isObjectDead

public boolean isObjectDead()

檢查 RemoteObject 是否已失效。

指定者:

接口 IRemoteObject 中的 isObjectDead

返回:

默認(rèn)返回 false。

attachLocalInterface

public void attachLocalInterface(IRemoteBroker localInterface, String descriptor)

修改當(dāng)前 RemoteObject 的描述。

此方法用于更改在創(chuàng)建 RemoteObject 期間指定的默認(rèn)描述符。

參數(shù):

參數(shù)名稱 參數(shù)描述
localInterface 指示要更改其描述符的 RemoteObject。
descriptor 指示 RemoteObject 的新描述符。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)