关于android 跨进程通信的一些总结

1、所有需要传输的数据,必须是可序列化的。

2、如图

 

2.1 、客户端a调用服务端的A,则,a尽量在子线程中处理,因为a调用A之后,a会被挂起,如果A做的是耗时操作,在可能导致客户端anr,另外A方法执行在子线程,如果有不能在UI线程操作的事情,需要通过handler等将事件发到主线程处理

2.2、服务端b调用客户端的B,则,b尽量在子线程中处理,因为b调用B之后,b会被挂起,如果B做的是耗时操作,在可能导致服务端anr,另外B方法执行在子线程,如果有不能在UI线程操作的事情,需要通过handler等将事件发到主线程处理

3、声明AIDL文件的时候,需要注意以下几点:

    3.1、如果使用了自定义的对象,需要给该对象声明一个AIDL文件

    3.2、如果使用了自定义的对象,在使用该对象的AIDL文件中,要手工引入该对象文件的完整路径

    3.3、如果在AIDL中,使用了非基本类型数据作为参数,需要声明in、out、inout

    3.4、客户端的AIDL文件和服务端的AIDL文件必须保持一致

4、客户端将一个对象传到服务端的时候,在binder会生成一个新的对象,将新的对象传给服务端,即服务端和客户端不是同一个对象,是依赖序列化和反序列化搞的两个对象 (服务端传给客户端也是这样的)

5、如果要实现对服务端监听的注册和反注册,要使用RemoteCallBackList

6、RemoteCallBackList 是在服务端使用的,他将binder和listener做了映射

7、鉴权工作可以在onBind、onTransact中处理

8、Messenger 是AIDL+Handler实现的

读《android开发艺术探索》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
千里马8年Android系统及应用开发经验,曾担任过美国unokiwi公司移动端技术总监兼架构师,对系统开发,性能优化,应用高级开发有深入的研究,Android开源定制ROM Lineage的贡献者之一,国内首家线下开辟培训Android Framework课程,拥有2年的Android系统培训经验。成为腾讯课堂专业负责android framework课程分享第一人,致力于提高国内android Framework水平Android Framework领域内是国内各大手机终端科技公司需要的人才,应用开发者都对Android系统充满着好奇,其中的binder是重中之重,都说无binder无Android,binde是Android系统的任督二脉。课程水平循序渐进,由中级再到高级,满足各个层次水平的android开发者。1、灵活使用binder进程通信,在app端对它的任何api方法等使用自如2、可以单独分析android系统源码中任何binder部分,分析再也没有难度3、掌握binder驱动本质原理,及对应binder驱动怎么进行进程通信,及内存等拷贝方式数据等4、对binder从上层的java app端一直到最底层的内核binder驱动,都可以顺利理通5、针对系统开发过程中遇到的binder报错等分析方法,及binder bug案例学习6、针对面试官任何的binder问题都可以对答自如7、socket这种进程通信实战使用8、针对android源码中使用的socket源码轻松掌握9、android系统源码中最常见的socketpair中双向进程通信10、使用socket实现一个可以让app执行shell命令的程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值