Android IPC(inner process communication)进程间通信(关于面试知识点整理)

我们android在面试的时候,面试官会问到我们IPC,这个被问到的概率非常大,当然我每一次都会被问到,所以我总结了一下IPC,通过看一些大牛的书籍,整理了一些知识点,希望能帮到大家;
一。android IPC简介
  IPC是Inter-process  Communication的缩写。含义就是进程间的通讯或者夸进程通讯,是指两个进程间进行数据交换的过程,那么什么是进程,什么是线程,进程和线程是两个截然不同的概念,在操作系统中,线程是CPU调度的最小单位,同时线程是一种有限的系统资源,而进程指的一个执行单位,在PC和移动设备上指的是一个程序或者一个应用,一个进程可以包含多个线程,因此进程和线程是包含和被包含的关系,最简单情况下,一个进程可以只有一个线程,即主线程,在android里面也叫UI线程,在UI线程里才能操作界面元素。

那么在android中,有特色的进程间的通讯方式就是Binder了,通过Binder可以轻松实现进程间的通信,除了Binder,android还支持Scoket,通过Scoket也可以实现任意两个终端之间的通信,当然一个设备上的两个进程之间通过Scoket通信自然也是可以的;

说到IPC的使用场景就必须提到多进程,只有面对多进程这种场景下,才需要考虑进程间的通信,所有运行在不同进程中的四大组件,只要他们之间需要通过内存来共享数据,都会共享失败,这也是多进程所带来的主要影响,正常情况下,四大组件之间不可能不通过一些中间层来共享数据,那么通过简单地指定进程名来开启进程都会无法正确运行,一般来说,使用多进程会造成如下几方面的问题:
1.静态成员和单例模式完全无效
2,线程同步机制完全失效
3.SharedPerences的可靠性下降
4,Application会多次创建

为了解决这个问题,系统提供了很多跨进程通信方法,虽然说不能直接地共享内存,但是通过跨进程通信我们还是可以实现数据交互,实现跨进程通信的方式有很多,

二。IPC的方式

1.Bundle
一个进程启动另一个进程,Bundle将信息通过Intent发送出去。
条件:
传输数据必须能够被序列化,比如基本类型, Parcelable接口对象,
Bundle不支持的类型无法进程间传递
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值