Android多进程编程 IPC(Inter-Process Communiction) 小摘

概念:

线程是系统分配资源和CPU调度的基本单位,同时线程是一种有限的系统资源。而进程一般是指一个执行单元,在PC端一般指一个程序或者一个应用;
每个进程都有自己独立的资源和内存空间,其它进程不能任意访问当前进程的内存和资源,系统给每个进程分配的内存会有限制;
一个进程可以包含多个线程;

场景:

单进程所分配的内存不够,它允许在同一个应用内,为了分担主进程的压力,将占用内存的某些页面单独开一个进程,比如Flash、视频播放页面,频繁绘制的页面等。

特征:

独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。
动态性:进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。在进程中加入了时间的概念,进程具有自己的生命周期和各种不同的状态,这些概念在程序中部是不具备的。
并发性:多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响。

开启多线程方式:

开启多进程通信你必须知道这些:

  • 每一个系统默认进程名是包名;
  • 进程名以“:”开头的进程属于私有进程,其他组件不可以和他跑在同一个进程中,而进程名不以“:”开头的进程属于全局进程,其他应用通过ShareUID方式可以和它跑在同一个进程中。
  • 两个应用通过ShareUID跑在同一个进程中是有要求的,需要两个应用有相同的ShareUID并且签名相同才可以。在这种情况下,它们可以相互访问对方的私有数据。看起来像是一个应用的两个部分。

多进程通信产生的问题:

  • 静态成员和单例模式完全失效(进程内存独立);
  • 线程同步机制完全失效; SharedPreferences的可靠性下降(一定几率数据丢失);
  • Application会多次创建(新进程需要分配独立虚拟机,相当于启用一个新应用)。

ps:
进程可在 Eclipse/Android Studio 工具DDMS内查看,
还可以 用shell 命令查看,:adb shellps 或者 adb shell ps|grep com.xx.xxxxx。 其中com.xx.xxxxx是包名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值