美文网首页
记:记录初了解Binder

记:记录初了解Binder

作者: 爱吃板栗的小女孩 | 来源:发表于2018-12-05 11:41 被阅读25次

参考学习自:http://weishu.me/2016/01/12/binder-index-for-newer/

一.什么是Binder?

答:Binder是Android跨进程通信的一种方式

二.为什么Android中会有Binder?

背景介绍:由于Android是基于Linux系统的。进程隔离是为保护操作系统中的数据互不干扰而设计的一种技术。就类似无法将A进程的内容数据写入到B进程;A进程死掉了,但是这并不会影响到我们运行B进程。在Linux中有Linux Kernel时操作系统的核心,独立于普通的应用程序。当有需求需要调用内核的东西,使用的是系统调用,所有的访问都是在它的访问下,经过它访问的。然后Linux中A进程需要和B进程互通使用的Socket/管道/消息队列

已经有了解决的办法用来通信,那为什么还会有Binder:

主要原因就是Binder的良好性能和安全性
性能是由于Socket/管道/消息队列这类都需要从A进程拷贝到内核,再从内核拷贝到B进程,需要两次拷贝复制的过程。而在Binder只需要一次拷贝
安全性是由于Binder从协议本身就支持通信双方的身份校验,因此提高了安全性

三.Binder的工作原理?

Binder中有4种角色:
Client:客户端,需要服务
Server:服务端,提供服务
ServerManager:相当于服务的管理端
Binder驱动:负责进程之间通信的建立

举个例子:
王老板代表Client ;张阿姨代表Server;58同城代表ServerManager
张阿姨向58同城注册了个账户,他有一个object对象,可以打扫卫生(clean)。58同城把这个记录了下来。
有天王老板新开了公司,通过ServerManager想要找张阿姨的object对象,来进行clean。由于进程之间的通信都需要经过Binder驱动,但是Binder驱动会做一点小改动:他并不会给王老板的真正的object对象,而是一个复制出来一模一样的object对象objectProxy。当交付给王老板这个假的object对象(objectProxy)时候,王老板调用clean方法,这个clean实际上什么都不会做,只把参数进行了封装,把值实传回给驱动,驱动一看这个是objectProxy,知道自己是给了个假的object,于是Binder驱动通知server进程,去调用clean方法,然后将正确的值返回给驱动,驱动又把这个正确值回传给client。至此就完成了一次传输

由于objectProxy和object看起赖特别像,几乎无法分辨,故会有Binder可以跨进程传递对象
其实Binder驱动中存在的object对象也是个代理对象,因为驱动和server之间也属于跨进程。只有server中对象是真实的,其他都是代理对象
这是Android的一种代理模式,对于操作者来说,真假object对它没有影响,因为驱动会进行自动转换。
Client进程只不过是持有了Server端的代理;代理对象协助驱动完成了跨进程通信。

四.Binder的使用场景?

1.当Activity想要Server进行通信拿到Server中的内容,使用的就是Binder(bindService方式启动的service)。先是在server定义一个binder,然后在onbind()方法适合返回这个binder。在activity中new一个ServiceConnection,这里重写的onServiceConnected()就会访问了service方法

2.ActivityManagerServer

相关文章

  • 记:记录初了解Binder

    参考学习自:http://weishu.me/2016/01/12/binder-index-for-newer/...

  • 超简单的Binder,AIDL和Messenger的原理及使用流

    Binder的原理 要想了解AIDL就需要先了解Binder的原理,所以这里先说一下Binder原理,Binder...

  • IPC机制——AIDL的简单梳理

    在了解AIDL之前,我们要对Binder有简单了解。 Binder Binder是android的一个类,实现了 ...

  • Android framework学习索引

    binder基础 启动流程要求对于binder机制有了解,要有binder的学习基础binder机制https:/...

  • Android binder通信机制分析

    学习binder,我建议先了解binder在哪里应用,然后你才知能想去更了解它。。 1.哪里使用 在android...

  • Android Review - Binder机制(二)

    前一篇我们从理论上来了解Android的Binder机制,本篇从实战来深入了解Android的Binder机制。 ...

  • Binder学习记录

    前言:本文是跟随书本Android开发艺术探索的学习总结,虽然说自己也看了下源码,但是还停留在Binder运作的表...

  • Android Binder(记录)

    今天看了看Binder通信机制,感觉云里雾里,很懵逼,可能是自己水平还不够吧存一篇比较好的文章,以后多读几遍。ht...

  • Android:binder记录

    binder是android跨进程通信的方式,现在记录一下 推荐:红茶一杯话Binder系列 为什么使用binde...

  • Binder相关总结

    本文用于记录Binder机制的相关知识总结。简单讲,Binder是Android跨进程通信方式。进程本质是一个对象...

网友评论

      本文标题:记:记录初了解Binder

      本文链接:https://www.haomeiwen.com/subject/nakicqtx.html