美文网首页
Binder原理(一)

Binder原理(一)

作者: 愿你我皆是黑马 | 来源:发表于2022-02-06 23:54 被阅读0次

    最近在画各种图,所以这里贴贴图来说明一下


    前言

    安卓中的Binder是一牵扯比较多的东西,由于内容较多先把bindServer 等 一些流程单独提到下一次补充。其次,虽然自己所掌握的东西感觉还是相对浅显、C++层也不曾涉及。但是这个知识点是一个必须经历的过程。先尽量把自己能想到的点写一下。以便后续补充。


    Binder是什么


    Binder优势


    Binder的通信机制


    AIDL文件编译成java文件组成



    AIDL编译出来的方法的执行过程(暂时忽略bindService流程)

    • 关于bindService的作用:客户端调用bindService传入ServiceConnection回调接口参数来回调服务连接状态。通过AMS和远程服务通信获取远程服务的IBinder对象,返回给客户端,客户端就可以拿到服务的引用来调用相关方法。
    • 这时客户端拿到上面bindService获取服务端的引用:\color{#34a853}{由于Binder 是通过调用时将内存变化同步给被调用方,从而实现的跨进程通信。所以此引用非彼引用}通过这个引用\color{#4285f4}{调}\color{#ea4335}{用}\color{#fbbc05}{.add(a,b)}\color{#4285f4}{方}\color{#34a853}{法}\color{#ea4335}{的}流程如下

    编写AIDL文件一些注意事项

    举例

    1. 新建com.a.bean.Person类,并实现Parcelable的 ,java文件Person.java
    // Person.java
    package com.a.bean;
    public class Person implements Parcelable {...}
    
    1. 编写aidl接⼝文件,Person.aidl
    // Person.aidl
    package com.a.bean;
    parcelable Person;
    
    1. 编写使用Person bean的aidl文件,PersonAidl.aidl
    import com.a.bean.Person;
    interface PersonAidl {
     void addPerson(in Person person);
     List<Person> getPersonList();
    }
    

    相关文章

      网友评论

          本文标题:Binder原理(一)

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