Binder

  • Binder :  在android中适用于进程间通信(IPC)的;

        在Linux层面说 它属于一个驱动,只是不需要硬件 操作的是一小段内存;

        在线程角度说 Binder驱动代码运行在内核态,客户端调用Binder是通过系统调用完成的。

  •  Binder框架:
  1. binder服务端:
    • 实际上就是一个binder,一旦创建就会启动一个隐藏线程,会接收binder驱动发送的消息收到消息后 执行到binder对象的OnTransaction()方法
    •  并按照该函数的参数执行不同的服务代码,故重载onTransact()是必须的
    • onTransaction(): 主要内容是onTransact()函数的参数转换为服务函数的参数,参数来源是客户端调用transaction()函数使输入的,因此,
      • 如果transact()有固定格式的输入 那么onTransact()就会有固定格式的输出
  2. binder驱动:
    1. 服务端Binder对象被创建的同时 会在Binder驱动中创建一个 mRemote(IBinder类型)的对象,客户通过它来访问远程服务
    2. 重载 transact()方法具体实现:
      1. 向服务端线程发送调用消息
      2. 挂起当前线程,等待服务器端执行完毕后的通知
      3. 接到通知,继续客户端线程,并返回执行结果
  3. 应用程序客户端
posted @ 2013-02-27 15:54  nibl  阅读(341)  评论(0编辑  收藏  举报