为了账号安全,请及时绑定邮箱和手机立即绑定

Android实现跨进程通信

Kaneki 移动开发工程师
难度中级
时长 1小时59分
学习人数
综合评分9.57
3人评价 查看评价
8.7 内容实用
10.0 简洁易懂
10.0 逻辑清晰
  • burning🌹🌹😳😭。◕‿◕。卡罗拉´・ᴗ・`有事了。
    00:05
    看视频
  • 无啦啦🙄🙄🙄🌹❤😭😭
    00:05
    看视频
  • AIDL 如何实现2MB以上的数据通信

  • 撒打算打算打算打算借古讽今askdjhaksdhkasjhdkjashdkjshdkjshdkjashdkjshdkjhsdkjhsdkjhaskdjhaskdjhasjkfgsjhdzgfusjzgfjsujkjgzbiqukjasdghnik哇实打实大师达大厦大厦大厦啊啥的啊啊是啊的爱上阿斯顿撒打算打算打算上发现噶受到广泛发球文身断发文身断发猥琐点zfwesdzrfwesdzzrfdwessrd2    weasrd    2wased2    qweasd2    qwaed    2qw五色饭的五色东方卫视的粉色瑞典政府全额啊谁都想放弃啊饿死的消费维权啊是大润发撒打算打算打算打算借古讽今askdjhaksdhkasjhdkjashdkjshdkjshdkjashdkjshdkjhsdkjhsdkjhaskdjhaskdjhasjkfgsjhdzgfusjzgfjsujkjgzbiqukjasdghnik哇实打实大师达大厦大厦大厦啊啥的啊啊是啊的爱上阿斯顿撒打算打算打算上发现噶受到广泛发球文身断发文身断发猥琐点zfwesdzrfwesdzzrfdwessrd2    weasrd    2wased2    qweasd2    qwaed    2qw五色饭的五色东方卫视的粉色瑞典政府全额啊谁都想放弃啊饿死的消费维权啊是大润发

  • 讲师讲的不错呦!!!

  • AIDL如何实现IPC 关键学习知识

    in、out、inout关键字的作用

    oneway关键字的作用

    AIDL如何实现callback机制

    如何自己编码实现AIDL的核心功能

    AIDL项目场景模拟

    连接服务:子进程向主进程,提供connect建连、disconnect断连|、isConnected连接状态获取三个方法

    消息服务:主进程调用sendMessage方法通过子进程的连接发送消息,也可以通过调用registerMessageReceiverListener在主进程中监听子进程的消息,也有个unRegisterMessageReceiverListener方法注销整个消息的监听

  • Android跨进程通信方式

    主要是AIDL,AIDL基于BInder,是安卓官方提供的一种更加方便基于Binder实现IPC通信的方式

    安卓本身通过AIDL实现Intent、Messenger、ContentProvider等一列机制实现跨进程通信

    文件共享也可以实现跨进程通信

    AIDL是定义IPC过程中接口的一种描述语言,AIDL文件在编译过程中生成接口的实现类,用于IPC通信。AIDL基本语法支持基本数据类型,实现Parcelable接口的对象。List、Map

    Messenger机制:

    基于Handler、Message实现,Messenger不支持并发的ipc通信,支持串行实时通信。Messenger支持传输Bundle支持的数据类型

  • Binder架构 四层一次是AIDL、Java、Native、Kernel

    AIDL  AMP... -> Java BinderProxy->Native BpBinder ->Kernel binderDriver->Native BBinder ->Java Binder ->AIDL Ams..


  • 跨进程通信核心

    binder 

    基于c/s结构,稳定性好,不需要考虑进程同步问题,优于共享内存方式

    binder底层驱动基于内存映射,所以性能较好,数据拷贝次数只有一次,优于管道、消息队列、socket拷贝两次

    安全性高,在binder通信过程中,通信双方对方的进程uid/pid是可见的

  • 跨进程通信IPC

    进程间通过内核的机制完成数据交换。称之为进程间通信(inter process communication)

    ①管道

    分为匿名管道和有名管道

    匿名管道只能用于父子进程 或者兄弟进程之间也就是亲人进程

    有名管道可以用于两个不同的进程。

    管道都是基于内存中缓冲区间实现,大小都是固定的4KB,管道读写时确保对端的存在,读只能从头开始读,写入从末尾开始。管道的数据只能从一个方向流动,若需要双方通信需要建立两个管道,一般管道用于轻量级的进程间通信

    ②消息队列

    存放在内核消息链表,因为存在内核中,所以大家都可以从消息链表中读写。每个消息队列都有一个消息队列标识符表示。消息队列只会在内核重启或者特定删除情况下才会消息。消息队列消息的写入是不需要其它进程等待的,先把消息写到队列中,其它进程可以通过这个队列读取消息。消息队列的读取是支持随机查询读取,想要读取特定的消息类型也是可以直接读取到的

    ③信号

    Linux系统中用于相互进程间通信和操作的一种机制,信号可以在任何时候发送给某个进程,而无需知道那个进程的状态,如果当前进程处于未执行的状态的话,信号会被内核保存起来,那个进程告诉它可以执行力,内核才会把存储的信号发送过去。整个来说信号是一个软件层次上对中断机制的一种模拟

    ④共享内存

    是整个IPC中效率最高的一种机制,通过多个进程直接读写同一块内存空间,内核中会专门留一块内存区,可以由需要访问的进程可以把内同一段内存区设到自己的私人地址空间,进程就可以读写这块内存,而不需要进行数据的拷贝。但是由于多个进程共享一段内存,就需要某种同步机制

    ⑤信号量

    就是一个计数器,用于多进程对共享数据的访问进行控制,信号量的意图在于进程间同步。信号量的增减其实是原子操作,它其实是内核实现的,其实就是操作系统学习到的PV操作

    ⑥套接字

    socket c/s结构 一个客户端一个服务端通过这两端建立一个socket连接,来完成通信


  • 跨进程通信 IPC

    进程间通过内核提供的机制完成数据交换

    Linux跨进程通信方式

    ①管道

  • 进程:是系统资源分配的最小的单位。进程间的资源和数据是相互隔离的

    线程:是进程内部独立执行单元,是程序执行的最小单位,进程内的线程间是共享大多数的资源和数据的

    进程内可以运行多个线程,线程的崩溃会影响到进程

    多进程优点:

    ①避免系统资源紧张,每个应用使用的资源是有限的,一旦主进程的内存资源不足,系统就会抛出oom异常,通过多进程将内存占用高的功能过滤到独立的子进程

    ②应用架构臃肿

    多进程的缺点:

    ①每当一个新进程使用,Application相关的生命周期方法就会被再次执行,也就是说应用的初始化代码会被多次执行到

    ②进程间数据共享失败

    ③进程间的共享 只能通过文件、intent、AIDL

首页上一页12下一页尾页

举报

0/150
提交
取消
课程须知
本课程适合有一定的Android基础,想彻底了解Android进程间通信的同学。
老师告诉你能学到什么?
1、Android中多进程开发的应用和关键技术 2、Android中进程间通信的主要方式以及应用场景 3、Binder 框架在•Android中的应用 4、AIDL Messenger的底层原理和开发应用 5、AIDL 中关键字 oneway in out inout的作用和原理 6、Binder连接池的开发与实现
意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!