美文网首页
Android 通信方式

Android 通信方式

作者: gbmaotai | 来源:发表于2018-10-23 09:20 被阅读0次

    最常用的通信方式是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

    相关文章

      网友评论

          本文标题:Android 通信方式

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