鴻蒙OS RemoteObject

2022-04-27 17:18 更新

RemoteObject

java.lang.Object

|---ohos.rpc.RemoteObject

public class RemoteObject
extends Object
implements IRemoteObject

實現(xiàn)遠程對象。

服務提供者必須繼承這個類。

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

嵌套類摘要

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

字段摘要

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

構造函數(shù)摘要

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

方法總結

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

構造函數(shù)詳細信息

RemoteObject

public RemoteObject(String descriptor)

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

參數(shù):

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

方法詳情

queryLocalInterface

public IRemoteBroker queryLocalInterface(String descriptor)

使用接口描述符查詢遠程對象。

指定者:

接口 IRemoteObject 中的 queryLocalInterface

參數(shù):

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

返回:

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

addDeathRecipient

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

注冊一個用于接收遠程代理死亡通知的回調。

指定者:

接口 IRemoteObject 中的 addDeathRecipient

參數(shù):

參數(shù)名稱 參數(shù)描述
recipient 表示要注冊的回調。
flags 表示死亡通知的標志。

返回:

返回 false,因為不需要此回調。

removeDeathRecipient

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

取消注冊用于接收遠程代理死亡通知的回調。

指定者:

接口 IRemoteObject 中的 removeDeathRecipient

參數(shù):

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

返回:

返回 false,因為不需要此回調。

getInterfaceDescriptor

public String getInterfaceDescriptor()

查詢接口描述符。

指定者:

接口 IRemoteObject 中的 getInterfaceDescriptor

返回:

返回接口描述符。

onRemoteRequest

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

設置接收請求的條目。

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

參數(shù):

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

返回:

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

Throws:

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

sendRequest

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

向 peer 對象發(fā)送請求。

如果對等對象和 RemoteObject 在同一設備上,則請求由 IPC 驅動程序發(fā)送。 如果它們在不同的設備上,則請求由套接字驅動程序發(fā)送。

指定者:

接口 IRemoteObject 中的 sendRequest

參數(shù):

參數(shù)名稱 參數(shù)描述
code 表示請求的消息代碼。
data 表示存儲待發(fā)送數(shù)據(jù)的MessageParcel 對象。
reply 指示接收響應數(shù)據(jù)的 MessageParcel 對象。
option 指示同步(默認)或異步請求。

返回:

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

Throws:

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

getCallingPid

public int getCallingPid()

獲取 RemoteProxy 對象的 PID。

返回:

返回 RemoteProxy 對象的 PID。

getCallingUid

public int getCallingUid()

獲取 RemoteProxy 對象的 UID。

返回:

返回 RemoteProxy 對象的 UID。

dump

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

將當前接口的狀態(tài)轉儲到具有特定描述符的文件中。

參數(shù):

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

Throws:

Throw名稱 Throw描述
RemoteException 如果打開 FileOutputStream 或將數(shù)據(jù)寫入 FileOutputStream 時發(fā)生錯誤,則拋出此異常。

slowPathDump

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

使用給定的 PrintWriter 對象將數(shù)據(jù)異步轉儲到指定文件。

此方法僅適用于同一設備上的數(shù)據(jù)轉儲。

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

參數(shù):

參數(shù)名稱 參數(shù)描述
fd 表示目標文件的文件描述符。
pw 指示用于將數(shù)據(jù)轉儲到目標文件的 PrintWriter 對象,禁用自動刷新。
args 指示要轉儲的參數(shù)(字符串數(shù)組)。

dump

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

將當前接口的狀態(tài)轉儲到具有特定描述符的文件中。

指定者:

在接口 IRemoteObject 中轉儲

參數(shù):

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

Throws:

Throw名稱 Throw描述
RemoteException 如果打開 FileOutputStream 或將數(shù)據(jù)寫入 FileOutputStream 時發(fā)生錯誤,則拋出此異常。

slowPathDump

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

將數(shù)據(jù)異步轉儲到指定文件。

此方法僅適用于同一設備上的數(shù)據(jù)轉儲。

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

指定者:

接口 IRemoteObject 中的 slowPathDump

參數(shù):

參數(shù)名稱 參數(shù)描述
fd 表示目標文件的文件描述符。
args 指示要轉儲的參數(shù)(字符串數(shù)組)。

Throws:

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

finalize

protected void finalize() throws Throwable

從類復制的描述:對象

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

finalize 的一般約定是,當 Java? 虛擬機確定不再有任何方法可以讓任何尚未終止的線程訪問此對象時調用它,除非是由于某個操作由準備完成的其他對象或類的完成所采取。 finalize 方法可以采取任何行動,包括使該對象再次可供其他線程使用;然而,finalize 的通常目的是在對象被不可撤銷地丟棄之前執(zhí)行清理操作。例如,代表輸入/輸出連接的對象的 finalize 方法可能會執(zhí)行顯式 I/O 事務以在對象被永久丟棄之前中斷連接。

Object 類的 finalize 方法不執(zhí)行任何特殊操作;它只是正常返回。 Object 的子類可以覆蓋這個定義。

Java 編程語言不保證哪個線程將為任何給定對象調用 finalize 方法。但是,可以保證調用 finalize 的線程在調用 finalize 時不會持有任何用戶可見的同步鎖。如果 finalize 方法拋出未捕獲的異常,則忽略該異常并終止該對象的終結。

在為一個對象調用 finalize 方法之后,不會采取進一步的行動,直到 Java 虛擬機再次確定沒有任何方法可以讓任何尚未終止的線程訪問該對象,包括可能的行動由其他準備完成的對象或類,此時該對象可能被丟棄。

對于任何給定的對象,Java 虛擬機永遠不會多次調用 finalize 方法。

finalize 方法拋出的任何異常都會導致該對象的終結被暫停,否則會被忽略。

覆蓋:

在類 Object 中完成

Throws:

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

isObjectDead

public boolean isObjectDead()

檢查 RemoteObject 是否已失效。

指定者:

接口 IRemoteObject 中的 isObjectDead

返回:

默認返回 false。

attachLocalInterface

public void attachLocalInterface(IRemoteBroker localInterface, String descriptor)

修改當前 RemoteObject 的描述。

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

參數(shù):

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號