美文网首页
Android Binder调用

Android Binder调用

作者: 麦粒果仁酥_ff0e | 来源:发表于2018-03-13 18:47 被阅读0次

准备工作

aidl定义接口int AService.a()方法

构造对象流程

  1. 客户端注册服务,从ServiceConnection.onServiceConnected()中拿到IBinder对象(实际上是BinderProxy类型的对象,继承了IInterface接口)
  2. 通过上述的IBinder对象,new出AService.Stub.Proxy,并把上述的BinderProxy作为参数传入构造函数,并且返回这个AService.Stub.Proxy对象
  3. 以后的调用中,客户端通过AService.Stub.Proxy,调用BinderProxy即可

调用a方法时的流程:

客户端逻辑:

  1. 上述AService.Stub.Proxy对象调用a方法
  2. a方法调用刚才构造方法传入的BinderProxy的transact方法(传入_data和_reply作为发送数据和接收数据的容器)
  3. BinderProxy通过jni向下调用

服务端逻辑:

  1. 服务端通过jni调用AService.Stub.execTransact(code参数用来标识一个方法)(android_util_Binder.cpp的onTransact方法调用来触发这个方法)
  2. 调用AService.Stub.onTransact方法
  3. 通过AService.Stub.onTransact中的code作为条件,找到并调用AService.Stub中的a方法,但AService.Stub中没有a方法,调用AService中的a方法

重点:

BinderProxy是远程Binder对客户端暴露的代理对象

相关文章

  • Android Binder调用

    准备工作 aidl定义接口int AService.a()方法 构造对象流程 客户端注册服务,从ServiceCo...

  • Binder驱动注册

    Binder驱动注册 Android进程间利用Binder机制实现通信,在App进程中,调用ioctl方法使程序陷...

  • 彻底理解Android Binder通信架构

    重点推荐 Android系统篇之—Binder机制和远程服务调用机制分析http://www.520monkey....

  • Android Aidl 的使用

    Android Aidl 的使用 Binder框架 -- android AIDL 的使用 Binder框架 – ...

  • Android Binder原理分析

    Android Binder 1. 简介 Binder是Android最主要的进程间通信方式,Binder使用C-...

  • android binder调用流程备忘

    先来个startService主要流程图: 这里我们可以明显看到跨了两个进程,所以这里肯定是一个跨进程的通信,那到...

  • binder学习笔记

    进程间通信方式 1、为什么android需要采用binder IPC 两次拷贝,先调用cope_form_user...

  • Android流程原理图

    android应用启动流程 android系统启动过程 binder架构 binder机制 onCreate() ...

  • Android Binder

    Android Binder

  • 2018-09-04 binder

    【转】图文详解 Android Binder跨进程通信的原理 [【转】](Android Binder机制(超级详...

网友评论

      本文标题:Android Binder调用

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