美文网首页
进程间的通信认识

进程间的通信认识

作者: dev晴天 | 来源:发表于2018-08-11 19:27 被阅读0次
    一、本地服务:运行在自己应用里的服务
    
    远程服务:运行在其他应用里的服务(实现进程间通信 ipc(Inter-Process Communication))
    
    二、AIDL(Android Interface Define Language) 是IPC进程间通信方式的一种.用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码.
    
    三、补充:
    andoid IPC方式主要有以下几种:
    1.bundle :
    简单易用  但是只能传输Bundle支持的对象 常用于四大组件间进程间通信 
    2.文件共享:
    简单易用  但不适合在高并发的情况下 并且读取文件需要时间 不能即时通信   常用于并发程度不高 并且实时性要求不高的情况
    3.AIDL :
    功能强大 支持一对多并发通信 支持即时通信   但是使用起来比其他的复杂 需要处理好多线程的同步问题  常用于一对多通信 且有RPC 需求的场合(服务端和客户端通信)
    4.Messenger :
    功能一般 支持一对多串行通信 支持实时通信  但是不能很好处理高并发情况 只能传输Bundle支持的类型  常用于低并发的无RPC需求一对多的场合 
    5.ContentProvider :
    在数据源访问方面功能强大 支持一对多并发操作 可扩展call方法  可以理解为约束版的AIDL  提供CRUD操作和自定义函数  常用于一对多的数据共享场合
    6.Socket :
    功能强大 可以通过网络传输字节流 支持一对多并发操作  但是实现起来比较麻烦 不支持直接的RPC   常用于网络数据交换
    
    总结起来  
    当仅仅是跨进程的四大组件间的传递数据时 使用Bundle就可以  简单方便  
    当要共享一个应用程序的内部数据的时候  使用ContentProvider实现比较方便  
    当并发程度不高  也就是偶尔访问一次那种 进程间通信 用Messenger就可以  
    当设计网络数据的共享时  使用socket 
    当需求比较复杂  高并发 并且还要求实时通信 而且有RPC需求时  就得使用AIDL了 
    文件共享的方法用于一些缓存共享 之类的功能
    
    需求:在第一个应用的服务中有个方法,要求你在带二个应用中点击按钮调用第一个服务的方法。
    
    参考简书:http://www.jianshu.com/p/295202e51460?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq
    
    
    

    相关文章

      网友评论

          本文标题:进程间的通信认识

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