纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

Android跨进程通信

12月8日 孤小单投稿
  跨进程通信的几种方式文件共享:不同进程访问相同文件,实现线程之间数据通信,但是多个进程同时访问会出现数据一致性等问题,不适合高并发;MMKV:MMKV是微信团队开源的高性能keyvalue组件,良好的支持Android跨进程通信;Socket:通过网络的方式实现进程之前通信,功能强大,可通过网络传输字节流,支持一对多实时并发通信,主要场景是通过网络进行数据交互;Binder:Android系统中大部分场景的跨进程通信实现方式都是基于Binder。为什么需要多进程
  默认情况下,一个app只会运行在一个进程中,进程名为app的包名。Android系统对每个应用进程的内存占用是有限制的,占用内存越大的进程,被系统杀死的可能性就越大。使用多进程可以减少主进程占用的内存,避免OOM问题,降低应用退到后台被系统杀死的概率。
  实现一些特殊功能
  比如可以实现推送进程,使得主进程退出后,能离线完成消息推送服务。还可以实现守护进程,来唤醒主进程达到保护目的。还可以实现监控进程专门负责上报bug,进而提升用户体验。还有腾讯开源的即时通讯mars,也是将通信核心放在独立进程中,用于更好地保持app的存活率。多进程产生的问题Application的重复创建
  创建新的进程时会创建新的Application对象,而我们通常在Application的onCreate方法中只是完成一些全局的初始化操作,不需要多次执行。
  解决思路:获取当前进程名,判断是否为主进程,只有主进程的时候才执行初始化操作静态成员和单例模式完全失效
  进程间的内存空间是相互隔离的,一个内存空间的值修改不影响另一个的值。SharedPreferences的可靠性下降
  多进程并发问题不好解决,应该尽量避免多进程并发操作,比如可以只让主进程进行对数据库的操作。线程同步机制完全失效AndroidIPC
  IPC即InterProcessCommunication(进程间通信)。
  Android基于Linux,而Linux出于安全考虑,不同进程间不能之间操作对方的数据,这叫做进程隔离。
  在Linux系统中,通过虚拟内存机制来实现进程隔离。虚拟内存机制就是为每个进程在逻辑上分配了线性连续的内存空间,每个进程只管理自己的虚拟内存空间,因此从逻辑上实现了进程间的隔离。
  每个进程的虚拟内存空间(进程空间)又被分为了用户空间和内核空间,进程只能访问自身用户空间,只有操作系统能访问内核空间。
  由于进程只能访问自身用户空间,因此在传统的IPC中,发送进程需要通过copyfromuser(系统调用)将数据从自身用户空间拷贝到内核空间,再由接受进程通过copytouser从内核空间复拷贝到自身用户空间,共需要拷贝2次,效率十分低下。Android采用的是Binder作为IPC的机制,只需复制一次。Binder
  为什么选用Binder作为IPC的机制?性能较好,管道、消息队列、Socket方式都需要2次数据拷贝,而Binder只需要1次数据拷贝,性能仅次于共享内存。缺点少,Binder基于CS架构,架构十分清晰明了,相比于内存共享,其实现方式更为简单,且无需解决同步问题。安全性好,Android为每个安装好的应用程序分配了自己的UID,传统的IPC形式,无法识别对方的身份标识(UIDGID),而使用BinderIPC时,这些身份标示是跟随调用过程而自动传递的。Server端很容易就可以知道Client端的身份,非常便于做安全检查。
  Binder1次拷贝的原理:
  BinderIPC通信的底层原理是通过内存映射(mmap),将接收进程的用户空间映射到内核空间,有了这个映射关系,接收进程就能通过用户空间的地址获得内核空间的数据,这样只需发送进程将数据拷贝到内核空间就可完成通讯。
  一次完整的BinderIPC通信:在内核空间创建一个数据接收缓存区。在内核空间中开辟一块内核缓存区。建立接收进程和数据接受缓存区的映射关系。建立内核缓存区和数据接受缓存区的映射关系。发送进程调用copyfromuser()将数据copy到内核缓存区。AIDL
  AIDL是一个缩写,全程是AndroidInterfaceDefinitionLanguage,也是android接口定义语言。准确地来说,它是用于定义客户端服务器通信接口的一种描述语言。它其实一种IDL语言,可以拿来生成用于IPC的代码,从某种意义上说它其实是一个模板。
  通过AIDL,可以让本地调用远程服务器的接口就像调用本地接口那么接单,让用户无需关注内部细节,只需要实现自己的业务逻辑接口,内部复杂的参数序列化发送、接收、客户端调用服务端的逻辑,你都不需要去关心了。
  在Androidprocess之间不能用通常的方式去访问彼此的内存数据。他们把需要传递的数据解析成基础对象,使得系统能够识别并处理这些对象。因为这个处理过程很难写,所以Android使用AIDL来解决这个问题。
  原理图Messager
  Messenger是基于消息Message的传递的一种轻量级IPC进程间通信方式(通过在一个进程中创建一个指向Handler的Messenger,并将该Messenger传递给另一个进程),当然本质就是对Binder的封装(也是通过AIDL实现的)。通过Messenger可以让我们可以简单地在进程间直接使用Handler进行Message传递,跨进程是通过Binder(AIDL实现),而消息发送是通过HandlersendMessage方法,而处理则是HandlerhandleMessage处理的;当然除了Handler之外还可以是自定义的相关的某些IBinder接口,简而言之,Messenger的跨进程能力是由构造时关联的对象提供的。
  Messenger方式进行进程间通信的原理图
投诉 评论 转载

舌苔厚腻且有齿痕,是什么问题?教你看舌苔辨健康舌头是身体健康的窗户,舌头的不同部位代表不同的脏腑。中医看病,讲究望、闻、问、切,望排首位,其中舌诊非常重要。通常,健康的舌头呈淡红色,表面有无数的乳头和绒毛,为薄白苔,……突破高手东契奇节奏无敌福克斯进步明显篮网真不能没有欧文杜兰特:小欧,你赶紧回来!任何一支球队都需要能够持球撕开对方防守的球员,突破是最常见的办法。不过,突破的方式很多,有的球员依靠节奏、有的球员依靠速度、有的球员依靠技术。当……摩托罗拉宣布motorazr2022配备全功能外屏日前,摩托罗拉官方公布了motorazr2022的外屏功能介绍海报。从海报可知,此次motorazr2022采用的是全功能外屏,外屏支持拍照、看视频、听音乐等,体验与内屏无异。……黑龙江游记之一百零八鸡西篇密山1包的轿车从虎头要塞到虎林火车站,已经是下午4点22分,正好赶上我昨天坐的那趟齐齐哈尔开往虎林的k7156次列车。下午4点52分由虎林往回返,进站买票、捡票、上车,准时开车,坐的……中国人寿财险寿险山西省分公司与工行山西分行签订合作框架协议3月8日,中国人寿集团驻晋成员财险、寿险与中国工商银行山西省分行共同签署战略合作框架协议。根据协议,双方将在党建共建、金融业务、保险业务、养老险业务等领域全面深化合作,不断探索……恢复出厂设置的终极方法,也是最干净的方法头条创作挑战赛刷机,在安卓手机刚面世的时候,我们为了让自己手机使用别的系统,或者,在你手机死机,或系统有bug的时候,常常使用的一种方法。也就相当于电脑重装系统。以……弃赛道,干地产?【弃赛道,干地产?】今天,半导体、光伏、新能源车、锂电池全军覆没。光伏板块跌幅7。5,半导体板块跌3,乘用车跌幅3。46,汽车零部件跌幅3。89,锂电池跌幅5。……Android跨进程通信跨进程通信的几种方式文件共享:不同进程访问相同文件,实现线程之间数据通信,但是多个进程同时访问会出现数据一致性等问题,不适合高并发;MMKV:MMKV是微信团队开源的高性能ke……我国科学家首次在月球上发现新矿物嫦娥石(科技自立自强)来源:人民日报嫦娥石理想晶体图。中核集团核地研院供图9月9日,国家航天局、国家原子能机构联合宣布,中国科学家首次在月球上发现新矿物,并命名为嫦娥石。该矿物是人……Ryzen72700XVSRyzen75800X,性能差距有虽然AMD的Ryzen7000处理器已经发布上市很久了,而且已多轮小幅降价,但是其总体升级装机成本仍然很高。现在还有大量仍在使用Ryzen2000和Ryzen3000系列处理器……切尔西穆里尼奥第三任期启动?联系完成,接到电话西班牙媒体RELEVO7日(韩国时间)报道称,穆里尼奥教练是切尔西接触过的教练之一,还有路易斯恩里克、朱利安纳格尔斯曼和努诺桑托。切尔西已经解雇了主教练格雷厄姆波特。这是……花旗银行2022年第四季度平均每千营业网点投诉量居外资法人银来源:中国网近日,银保监会消费者权益保护局发布2022年第四季度银行业消费投诉情况的通报。通报显示,2022年第四季度,花旗银行平均每千营业网点投诉量居外资法人银行首位。……
多地美团出现疑似色情商家,被曝1周仍正常显示,用户质疑审核不传世攻速版活久见!揭露男生不可告人的10个秘密!(男生勿进)辐射杂谈(08)氢弹全国哪的辣椒酱最好吃?通过筛选,这4款辣椒酱被顾客挖出王思聪退出万达董事后,王健林曾自曝儿子懒,管理企业太累CBA三热点刘宝杰讽刺球员谈海外球队,郭昊文特训,小丁状态差相思的苦楚(日记一则)9人轮换已成定式?火箭全力打造下赛季阵容,首发5虎关键数据走6亿人在玩的传奇,如今成了挖矿手游,工作室称月赚千万?患儿出生后死亡,医方未建议进行四维彩超检查等,承担次要责任高端大气上档次,华为智能手表WATCHGT2022典藏版上手
2015中考作文热点预测哲理品悟篇八十七神仙卷作者是谁?八十七神仙卷与徐悲鸿的故事如何把淘宝宝贝打造成爆款梧桐树林小学五年级500字作文绽放青春17年5冠军,刘晓宇在CBA一共赚到多少薪水?另一收获让人羡卤菜时卤料和卤水的配比例一般是多少?肠胃病来得快,去得慢!想要赶走肠胃炎,这4点你需要知道单皇后怎么死的单皇后和刘聪关系揭秘陆小曼一生的情爱徐志摩不过是个舞伴而已背带裙你穿了吗让纯美清新柔美活力不离不弃知名视频平台紧急回应下架!封禁

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形