树叶云鸿蒙OS教程:鸿蒙OS RemoteObject

RemoteObject

java.lang.Object

|—ohos.rpc.RemoteObject

public class RemoteObject
extends Object
implements IRemoteObject

实现远程对象。

服务提供者必须继承这个类。

如果 RemoteObject 定义为匿名类、本地类或成员类而不是静态单例类,则可能会发生潜在泄漏。

嵌套类摘要

从接口 ohos.rpc.IRemoteObject 继承的嵌套类/接口
IRemoteObject.DeathRecipient

字段摘要

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

构造函数摘要

构造函数描述
RemoteObject(String descriptor)用于使用默认接口描述符创建 RemoteObject 实例的构造函数。

方法总结

修饰符和类型方法描述
booleanaddDeathRecipient(IRemoteObject.DeathRecipient recipient, int flags)注册一个用于接收远程代理死亡通知的回调。
voidattachLocalInterface(IRemoteBroker localInterface, String descriptor)修改当前 RemoteObject 的描述。
protected voiddump(FileDescriptor fd, PrintWriter pw, String[] args)将当前接口的状态转储到具有特定描述符的文件中。
voiddump(FileDescriptor fd, String[] args)将当前接口的状态转储到具有特定描述符的文件中。
protected voidfinalize()当垃圾收集确定不再有对该对象的引用时,由对象上的垃圾收集器调用。
intgetCallingPid()获取 RemoteProxy 对象的 PID。
intgetCallingUid()获取 RemoteProxy 对象的 UID。
StringgetInterfaceDescriptor()查询接口描述符。
booleanisObjectDead()检查 RemoteObject 是否已失效。
booleanonRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option)设置接收请求的条目。
IRemoteBrokerqueryLocalInterface(String descriptor)使用接口描述符查询远程对象。
booleanremoveDeathRecipient(IRemoteObject.DeathRecipient recipient, int flags)取消注册用于接收远程代理死亡通知的回调。
booleansendRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option)向 peer 对象发送请求。
protected voidslowPathDump(FileDescriptor fd, PrintWriter pw, String[] args)使用给定的 PrintWriter 对象将数据异步转储到指定文件。
voidslowPathDump(FileDescriptor fd, String[] args)将数据异步转储到指定文件。
从类 java.lang.Object 继承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造函数详细信息

RemoteObject

public RemoteObject(String descriptor)

用于使用默认接口描述符创建 RemoteObject 实例的构造函数。

参数:

参数名称参数描述
descriptor指示用于创建 RemoteObject 实例的接口描述符。

方法详情

queryLocalInterface

public IRemoteBroker queryLocalInterface(String descriptor)

使用接口描述符查询远程对象。

指定者:

接口 IRemoteObject 中的 queryLocalInterface

参数:

参数名称参数描述
descriptor表示用于查询远程对象的接口描述符。

返回:

返回与接口描述符匹配的远程对象; 如果没有找到这样的远程对象,则返回 null。

addDeathRecipient

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

注册一个用于接收远程代理死亡通知的回调。

指定者:

接口 IRemoteObject 中的 addDeathRecipient

参数:

参数名称参数描述
recipient表示要注册的回调。
flags表示死亡通知的标志。

返回:

返回 false,因为不需要此回调。

removeDeathRecipient

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

取消注册用于接收远程代理死亡通知的回调。

指定者:

接口 IRemoteObject 中的 removeDeathRecipient

参数:

参数名称参数描述
recipient指示要注销的回调。
flags表示死亡通知的标志。

返回:

返回 false,因为不需要此回调。

getInterfaceDescriptor

public String getInterfaceDescriptor()

查询接口描述符。

指定者:

接口 IRemoteObject 中的 getInterfaceDescriptor

返回:

返回接口描述符。

onRemoteRequest

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

设置接收请求的条目。

该方法由远程服务提供者实现。 使用 IPC 时,您需要使用自己的服务逻辑覆盖此方法。

参数:

参数名称参数描述
code表示对端发送的服务请求码。
data表示对端发送的MessageParcel 对象。
reply表示远程服务发送的响应消息对象。 本地服务将响应数据写入 MessageParcel 对象。
option指示操作是同步的还是异步的。

返回:

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

Throws:

Throw名称Throw描述
RemoteException如果发生远程服务错误,则抛出此异常。

sendRequest

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

向 peer 对象发送请求。

如果对等对象和 RemoteObject 在同一设备上,则请求由 IPC 驱动程序发送。 如果它们在不同的设备上,则请求由套接字驱动程序发送。

指定者:

接口 IRemoteObject 中的 sendRequest

参数:

参数名称参数描述
code表示请求的消息代码。
data表示存储待发送数据的MessageParcel 对象。
reply指示接收响应数据的 MessageParcel 对象。
option指示同步(默认)或异步请求。

返回:

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

Throws:

Throw名称Throw描述
RemoteException如果发生远程服务错误,则抛出此异常。

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)

将当前接口的状态转储到具有特定描述符的文件中。

参数:

参数名称参数描述
fd表示目标文件的描述符。
pw将对象的格式化表示打印到输出流。
args以字符串形式表示该方法的参数。

Throws:

Throw名称Throw描述
RemoteException如果打开 FileOutputStream 或将数据写入 FileOutputStream 时发生错误,则抛出此异常。

slowPathDump

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

使用给定的 PrintWriter 对象将数据异步转储到指定文件。

此方法仅适用于同一设备上的数据转储。

您需要重写此方法以定义要转储到文件的数据。 转储完成后,您需要关闭文件描述符。

参数:

参数名称参数描述
fd表示目标文件的文件描述符。
pw指示用于将数据转储到目标文件的 PrintWriter 对象,禁用自动刷新。
args指示要转储的参数(字符串数组)。

dump

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

将当前接口的状态转储到具有特定描述符的文件中。

指定者:

在接口 IRemoteObject 中转储

参数:

参数名称参数描述
fd表示目标文件的描述符。
args以字符串形式表示该方法的参数。

Throws:

Throw名称Throw描述
RemoteException如果打开 FileOutputStream 或将数据写入 FileOutputStream 时发生错误,则抛出此异常。

slowPathDump

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

将数据异步转储到指定文件。

此方法仅适用于同一设备上的数据转储。

或者,您可以覆盖 [slowPathDump(java.io.FileDescriptor,java.io.PrintWriter,java.lang.String]) 方法来定义要转储到文件的数据。 转储完成后,您需要关闭文件描述符。

指定者:

接口 IRemoteObject 中的 slowPathDump

参数:

参数名称参数描述
fd表示目标文件的文件描述符。
args指示要转储的参数(字符串数组)。

Throws:

Throw名称Throw描述
RemoteException如果转储命令发送失败或转储过程中发生错误,则抛出此异常。

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此方法引发的异常

isObjectDead

public boolean isObjectDead()

检查 RemoteObject 是否已失效。

指定者:

接口 IRemoteObject 中的 isObjectDead

返回:

默认返回 false。

attachLocalInterface

public void attachLocalInterface(IRemoteBroker localInterface, String descriptor)

修改当前 RemoteObject 的描述。

此方法用于更改在创建 RemoteObject 期间指定的默认描述符。

参数:

参数名称参数描述
localInterface指示要更改其描述符的 RemoteObject。
descriptor指示 RemoteObject 的新描述符。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/169415.html<

(0)
管理的头像管理
上一篇2025-03-21 22:23
下一篇 2025-03-21 22:25

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注