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

来源:互联网 发布:snmp 获取交换机端口 编辑:程序博客网 时间:2024/05/16 00:51

概念:

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

场景:

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

特征:

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

开启多线程方式:

  • Activity并启动一个service;
  • AndroidMenifest.xml 制定 android:process属性。
    http://blog.csdn.net/baodinglaolang/article/details/9903499

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

  • 每一个系统默认进程名是包名;
  • 进程名以“:”开头的进程属于私有进程,其他组件不可以和他跑在同一个进程中,而进程名不以“:”开头的进程属于全局进程,其他应用通过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
原创粉丝点击