千家信息网

ibinder的介绍以及查看有效性的方法

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,IBinder是远程对象的基本接口,是为高性能而设计的轻量级远程调用机制的核心部分。但它不仅用于远程调用,也用于进程内调用。这个接口定义了与远程对象交互的协议。不要直接实现这个接口,而应该从Binde
千家信息网最后更新 2025年12月02日ibinder的介绍以及查看有效性的方法

IBinder是远程对象的基本接口,是为高性能而设计的轻量级远程调用机制的核心部分。但它不仅用于远程调用,也用于进程内调用。这个接口定义了与远程对象交互的协议。不要直接实现这个接口,而应该从Binder派生。

  IBinder的 主要API是transact(),与它对应另一方法是Binder.onTransact()。第一个方法使你可以向远端的IBinder对象发送发出 调用,第二个方法使你自己的远程对象能够响应接收到的调用。IBinder的API都是同步执行的,比如transact()直到对方的 Binder.onTransact()方法调用完成后才返回。调用发生在进程内时无疑是这样的,而在进程间时,在IPC的帮助下,也是同样的效果。

   通过transact()发送的数据是Parcel,Parcel是一种一般的缓冲区,除了有数据外还带有一些描述它内容的元数据。元数据用于管理 IBinder对象的引用,这样就能在缓冲区从一个进程移动到另一个进程时保存这些引用。这样就保证了当一个IBinder被写入到Parcel并发送到 另一个进程中,如果另一个进程把同一个IBinder的引用回发到原来的进程,那么这个原来的进程就能接收到发出的那个IBinder的引用。这种机制使 IBinder和Binder像唯一标志符那样在进程间管理。

  系统为每个进程维护一个存放交互线程的线程池。这些交互线程用于派送所有 从另外进程发来的IPC调用。例如:当一个IPC从进程A发到进程B,A中那个发出调用的线程(这个应该不在线程池中)就阻塞在transact()中 了。进程B中的交互线程池中的一个线程接收了这个调用,它调用Binder.onTransact(),完成后用一个Parcel来做为结果返回。然后进 程A中的那个等待的线程在收到返回的Parcel后得以继续执行。实际上,另一个进程看起来就像是当前进程的一个线程,但不是当前进程创建的。

   Binder机制还支持进程间的递归调用。例如,进程A执行自己的IBinder的transact()调用进程B的Binder,而进程B在其 Binder.onTransact()中又用transact()向进程A发起调用,那么进程A在等待它发出的调用返回的同时,还会用 Binder.onTransact()响应进程B的transact()。总之Binder造成的结果就是让我们感觉到跨进程的调用与进程内的调用没什 么区别。

  当操作远程对象时,你经常需要查看它们是否有效,有三种方法可以使用:

  1 transact()方法将在IBinder所在的进程不存在时抛出RemoteException异常。

  2 如果目标进程不存在,那么调用pingBinder()时返回false。

  3 可以用linkToDeath()方法向IBinder注册一个IBinder.DeathRecipient,在IBinder代表的进程退出时被调用。

更多ibinder相关阅读请点击内推资讯→www.neitui.me/zx/

  内行问答-互联网行业经验交流平台→www.neitui.me/dkc/
  内推网(www.neitui.me ),专注于做互联网招聘行业内部推荐、打造最专业的互联网招聘内部推荐直招平台。


进程 线程 方法 对象 数据 互联网 接口 机制 互联 平台 结果 缓冲区 行业 招聘 推荐 管理 缓冲 有效 代表 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 战地五显示与服务器连接中断 一台服务器能接收多少客户 蓝天播放器苹果手机服务器异常 江苏东海网络安全教育讲座 表格怎么查找缺少数据库 大话西游2锦绣山河服务器人多吗 怎么销毁弹性公网的腾讯云服务器 阿里云领英上高雪冬软件开发 苹果手机验证不了服务器 国际服务器怎么赚钱 如何清理数据库步骤 中国药品注册数据库 网络安全法不当言论 汉中网络技术销售价格 scum换服务器之后旧的服务器 网络安全搭建和攻防 ef 从数据库生成模型 惠普服务器电脑开机风扇狂转 网络安全技术成熟度曲线报告 手机怎么看公司服务器 长宁区手机软件开发系统 大象精灵软件开发老板李昌勤图片 石家庄社保软件开发 深圳微桥网络技术公司 扫黄网络安全教案 遍历数据库返回值 游戏服务器出现问题是怎么了 河南质量系统管理软件开发 设置数据库连接文件的编码 怎么连服务器做3D效果图
0