Android进程间通信

  • 管理
    随笔- 95 文章- 0 评论- 8

     

    一.Linux系统进程间通信有哪些方式?

    1.socket;

    2.name pipe命名管道;

    3.message queue消息队列;

    4.singal信号量;

    5.share memory共享内存;

    二.Java系统的通信方式是什么?

    1.socket;

    2.name pipe;

    三.Android系统通信方式是什么?

    Binder 通信;

    四.Binder通信的优势是什么?

    高效率

    五.Binder通信的特点是什么?

    是同步,而不是异步;

    六.Binder通信是如何实现的?

    1.Binder通信是通过linux的binder driver来实现的,

    2.Binder通信操作类似线程迁移(threadmigration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返回;

    3.Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Binder通信是同步而不是异步。

    七. Android中的 Binder通信实现要点:

    1. Android中的Binder通信是基于Service与Client的工作模型的;

    2. 所有需要IBinder通信的进程都必须创建一个IBinder接口;

    3. 系统中有一个进程管理所有的system service:

    4. Android不允许用户添加非授权的Systemservice;

    5. 现在源码开放了,我们可以修改一些代码来实现添加底层system Service的目的;

    6. 对用户程序来说,我们也要创建server,或者Service用于进程间通信;

    7. ActivityManagerService管理JAVA应用层所有的service创建与连接(connect),disconnect;

    8. 所有的Activity也是通过这个service来启动,加载的;

    9. ActivityManagerService也是加载在Systems Servcie中的;

    八.Android的 Service工作流程

    1.Android虚拟机启动之前系统会先启动service Manager进程;2.service Manager打开binder驱动,并通知binder kernel驱动程序这个进程将作为System Service Manager;

    3.然后该进程将进入一个循环,等待处理来自其他进程的数据。4.用户创建一个System service后,通过defaultServiceManager得到一个远程ServiceManager的接口,通过这个接口我们可以调用addService函数将System service添加到Service Manager进程中;

    5.然后client可以通过getService获取到需要连接的目的Service的IBinder对象,这个IBinder是Service的BBinder在binder kernel的一个参考,

    6.所以serviceIBinder 在binder kernel中不会存在相同的两个IBinder对象,每一个Client进程同样需要打开Binder驱动程序。对用户程序而言,我们获得这个对象就可以通过binderkernel访问service对象中的方法。

    7.Client与Service在不同的进程中,通过这种方式实现了类似线程间的迁移的通信方式,对用户程序而言当调用Service返回的IBinder接口后,访问Service中的方法就如同调用自己的函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值