android中多进程模式的运行机制

一个应用程序如何开启多进程

android的四大组件加上属性android:process

带来的问题

当一个应用程序(一个apk)中开启了多进程后,会出现各种问题

  • 静态成员和单例模式完全失效
  • 线程同步机制完全失效
  • application会被多次创建
  • SharedPreferences数据访问可靠性下降

原因

  1. android为每个独立的应用程序分配一个独立的虚拟机,每一个进程都要分配一个虚拟机,不同的虚拟机在内存分配上有不同的地址空间,导致不同的虚拟机访问同一个对象会产生多份的副本。
  2. 所有运行在不同内存中的四大组件,只要他们之间通过内存来共享数据,都会共享失败。
  3. 不是同一块内存了,不管是锁对象还是锁全局类,都无法保证线程同步,因为不同的锁不是同一个对象
  4. 当一个组件跑在一个新的进程中的时候,由于系统要在创建新的进程同时分配独立的虚拟机。这个过程就是启动了一个应用的过程,因此相当于系统又把这个应用重新启动了一遍,既然重新启动了,就会重新创建application.运行在同一个进程中的组件是属于同一个虚拟机,同一个application
  5. 在多进程模式中,不同进程的组件会拥有独立的虚拟机,application,以及内存空间,也可以这样理解,同一个应用中的多进程,相同于两个不同的应用采用了SharedUID模式

实现跨进程通信

跨进程通信,虽然不能实现内存共享,但是通过跨进程可以实现数据交互

实现跨进程的方式很多,通过intent方式,共享文件,SharedPreference,基于Binder的Messager和AIDL以及Socket

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值