IPC机制

旧城冷巷雨未停 提交于 2020-02-10 00:48:41

一个应用默认只有一个进程,这个进程的名字就是应用的包名,进程是系统分配资源和调度的基本单位,每个进程都要有自己的资源和空间,其它程序不能任意访问当前进程的空间,系统给每个进程分配的空间会有限制。

但是这都是默认情况下的事情,伟大的程序员是不会屈服一个进程的,我就弄出多个进程来玩玩;Android系统也是蛮大方的,你要多个,好,我来满足你,你可以指定一些组件运行在不同的进程中,只需指定组件的:

1
  android:process

设置process属性的方式有两种:

  • android:process=“:remote”,以冒号开头,冒号后边的字符是可以随意指定的。当然这只是一种缩写形式 大专栏  IPC机制,全称应该是:包名+“:remote";这种形式表示该进程为当前应用的私有进程,其它应用的组件不可以和它跑在同一个进程中。
  • android:process=“xxx.xxx"表示运行在以这个名称的全局进程中,其它应用可以通过shareUID和他跑在同一个进程中;

虽然开启多进程是非常非常简单,但是有很多坑,一不小心就掉进去了:

  • Application多次创建,启动多进程的生活,Application会被多次创建,在application中我们可以通过当前进程名字,来初始化数据,防止无必要的初始化
  • 静态成员失效,各个进程是单独分配的内存,所以这里的静态成员变量将会失效
  • 文件共享,多个进程同时访问一个文件时,可能造成文件损坏丢失等情况
  • 断点调试的问题。调试就是跟踪程序运行过程中的堆栈信息,由于每个进程都有自己独立的内存空间和各自的堆栈,无法实现在不同的进程间调试
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!