• 主页 > 电脑技能培训 > 人工智能培训
  • ibinder可以传递哪些数据,ibinder和binder区别

    上面问题的关键是:进程A如何获取进程B提供的IBinder接口?在Android应用开发中,Service是四大核心组件之一,它主要用于执行长时间运行的后台任务,而不会受到用户界面交互的影响。而IBinder机制能够让不同进程之间的对象进行跨进程的调用和传输。这个android ipc之AIDL通讯demo是一个很好的学习资源,可以帮助开发者理解并掌握AIDL的使用方法。

    面向对象思想的引入将进程间通信转化为通过对某个Binder对象的引用调用该对象的方法,而其独特之处在于Binder对象是一个可以跨进程引用的对象,它的实体(本地对象)位于一个进程中,而它的引用(代理对象)却遍布于系统的各个进程之中。Android 系统启动后,会开启system_server进程,该进程里开启了很多系统服务,包括AMS、WMS、振动服务等。



    ibin现场



    1、ibin现场

    但是Client进程并不知道驱动返回给它的对象动过手脚,毕竟伪装的太像了,如假包换。Stub类继承自Binder,意味着这个Stub其实自己是一个Binder本地对象,然后实现了ICompute接口,ICompute本身是一个IInterface,因此他携带某种客户端需要的能力(这里是方法add)。



    i滨城



    2、i滨城

    Client开开心心地拿着objectProxy对象然后调用add方法;我们说过,这个add什么也不做,直接把参数做一些包装然后直接转发给Binder驱动。驱动就是操作硬件的接口,为了支持Binder通信过程,Binder使用了一种硬件,因此这个模块被称之为驱动。IBinder是远程对象的基本接口,是为高性能而设计的轻量级远程调用机制的核心部分。



    ibingge



    3、ibingge

    答:有两点1是拷贝到内核会对uid和pid等进行身份检测,权限安全,2是有一次拷贝,这就是个单向操作,server端哪怕修改了内存映射中的数据,也不会影响到client端中的数据,保证数据安全。Binder模糊了进程边界,淡化了进程间通信过程,整个系统仿佛运行于同一个面向对象的程序之中。



    i病毒



    4、i病毒

    Android使用的Linux内核拥有着非常多的跨进程通信机制,比如管道,System V,Socket等;为什么还需要单独搞一个Binder出来呢?在Android中,广播(Broadcast)是一种消息,任何应用程序都可以发送广播消息,任何应用程序也都可以接收广播消息。



    ibinin



    5、ibinin

    为什么要去理解Android的进程间通信机制对于Android开发工程师来说,如果不去理解进程间通信机制也可以使用系统提供的API完成应用开发,但如果想要达到更高的层级,那么就不能简单只会调用API。

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 80448874@qq.com 举报,一经查实,本站将立刻删除。如若转载,请注明出处:http://pglvshi.com/pgdnjn/5561.html

    加载中~

    相关推荐

    加载中~