Android 通信方式

最常用的通信方式是Binder、Socket、Handler,当然也有少量其他的IPC方式,比如杀进程Process.killProcess()采用的是signal方式。

1. Binder

Binder通信采用c/s架构,从组件视角来说,包含Client、Server、ServiceManager以及binder驱动,其中ServiceManager用于管理系统中的各种服务


20180821102605414.png

2.Socket

Socket通信方式也是C/S架构,比Binder简单很多。在Android系统中采用Socket通信方式的主要:

zygote:用于孵化进程,系统进程system_server孵化进程时便通过socket向zygote进程发起请求;

installd:用于安装App的守护进程,上层PackageManagerService很多实现最终都是交给它来完成;

lmkd:lowmemorykiller的守护进程,Java层的LowMemoryKiller最终都是由lmkd来完成;

adbd:这个也不用说,用于服务adb;

logcatd:这个不用说,用于服务logcat;

vold:即volume Daemon,是存储类的守护进程,用于负责如USB、Sdcard等存储设备的事件处理。

Socket方式更多的用于Android framework层与native层之间的通信。

3.Handler

Handler
Binder/Socket用于进程间通信,而Handler消息机制用于同进程的线程间通信,Handler消息机制是由一组MessageQueue、Message、Looper、Handler共同组成的,为了方便且称之为Handler消息机制。

很多时候,Handler是工作线程向UI主线程发送消息,即App应用中只有主线程能更新UI,其他工作线程往往是完成相应工作后,通过Handler告知主线程需要做出相应地UI更新操作,Handler分发相应的消息给UI主线程去完成

20180821102532388.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,442评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,581评论 2 59
  • 马上快结婚十年了,回忆起来就跟梦一样。仿若和腻味(对爱人的昵称)才刚刚认识,可岁月神偷,身边的孩子和往事,都...
    漫漫无忧阅读 393评论 0 1
  • 韦德被交易回热火了,这是一件幸事,尽管是和一个几乎没什么用的二轮签交换,看似有些屈辱,但从他同意进入骑士替补阵容开...
    大嘴胖胖熊阅读 491评论 0 2
  • “你变了,你变得更加坚强。可是一个女的变得坚强没有什么好处,是个男人就不会喜欢。” 你不懂啊,不坚...
    wy蜗牛阅读 180评论 0 0

友情链接更多精彩内容