写点什么

大型项目必备 IPC 之其他 IPC 方式(二)(1),移动跨平台开发框架移动

用户头像
Android架构
关注
发布于: 10 小时前

(2)客户端进程


客户端进程中,首先需要绑定服务端的 Service,绑定成功后,用服务端返回的 IBinder 对象来创建一个 Messenger,然后通过 Messenger 就可以向服务端发送消息了,发送的消息类型为 Message 对象。【注:如果需要服务端能够 回应客户端,就和服务端一样,我们需要在客户端也创建一个 Handler(重写 handleMessage 方法处理回传的数据)并创建一个新的 Messenger,并把这个 Messenger 对象通过 Message 的 replyTo 参数传递给服务端,服务端通过这个 replyTo 参数就可以回应客户端】。

4.AIDL

上面说到 Messenger,其是以串行的方式处理客户端发来的消息,如果有大量的并发请求,那么使用 Messenger 就不太合适了。同时 Messenger 主要作用就是传递消息,很多时候我们可能需要跨进程调用服务端的方法,这种情形 Messenger 就无法做到了,但是我们可以使用 AIDL 来实现跨进程的方法调用。下面就介绍一下 AIDL 的使用。使用使用 AIDL,也分为服务端和客户端:


(1)服务端


服务端首先要创建一个 Service 用来监听客户端的连接请求,然后创建一个 AIDL 文件,将暴露给客户端的接口在这个 AIDL 文件中声明,最后在这个 Service 中实现这个 AIDL 接口即可。


(2)客户端


客户端要做的事情稍微简单一些,首先需要绑定服务端的 Service,绑定成功后,将服务端返回的 Binder 对象转成 AIDL 所属的类型,接着就可以调用 AIDL 中的方法了。

5.ContentProvider

ContentProvider 是 Android 中提供的专门用于不同应用间进行数据共享的方式,从这一点,它天生就适合进程间通信。和 Messenger 一样,contentProvider 的底层实现同样是 Binder,由此可见,Binder 在 Android 中是何等的重要。虽然 ContentProvider 底层是用 Binder,但它的使用过程要比 AIDL 简单许多,因为系统已经做了封装。系统预置了许多 ContentProvider,比如通讯录信息,日程变信息等,要跨进程访问这些信息,只需要通过 ContentResolver 的 query、update、insert 和 delete 方法即可。使用:创建一个自定义的 ContentProvider 很简单,只需要继承 ContentProvider 类并实现六个抽象方法即可:onCreate、query、update、insert、delete 和 getType。除了 onCreate 由系统回调并运行在主线程中,其他五个方法由外界回调并运行在 Binder 线程池中。

6.Socket

Socket 也称为“套接字”。是网络通信中的概念,它分为流式套接字和用户数据报套接字两种,分别对应于网络传输控制层中的 TCP 和 UDP 协议。TCP 是面向连接的协议,提供稳定的双向通信功能,TCP 连接的建立需要经过“三次握手”才能完成,为


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


了提供稳定的数据传输功能,其本身提供了超时重传机制,因此具有很高的稳定性。而 UDP 是无连接的,提供不稳定的单向通信功能,当然 UDP 也能实现双向通信功能。在性能上,UDP 具有更高的效率,缺点是不保证数据一定能够正确传输,尤其是在网络阻塞的情况下。


**阿里 P7Android 高级架构进阶视频免费学习请点击:[https://space.bilibili.com/474380680](


)**

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
大型项目必备IPC之其他IPC方式(二)(1),移动跨平台开发框架移动