简介:
IPC:Inter-Process Communication 含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。
进程:一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用。
线程:CPU调度的最小单元,同时线程是一种有限的系统资源,一个几进程可以有多个线程。
注意:在android中主线程也叫UI线程,不可以做耗时任务,否则会引发ANR:Application Not Responding
为何要多进程:
第一:一个应用因为某些原因需要采用多进程模式来实现,比如APP中广告拦截和下载,需要运行在单独的进程中,避免这些模块死掉而影响主程序Crash,其他情况还有比如插件 模块。
第二:为了加大一个应用可使用的内存空间需要多进程来获取多分内存空间。
第三:当前应用需要向其他应用获取数据。
如何开启多进程:
方法一:给四大组件指定android:process属性,
注意:
android:process="com.yxx.ipc.remote"和android:process=":remote"
这两种方式的区别在于:
第一:进程名不同:一个是com.yxx.ipc.remote 另一个是com.yxx.ipc:remote
第二:使用:的为简写,含义是指要在当前的进程 名前面附上当前的包名。另一种则不会。
第三:进程以 : 开头的属于当前应用的私有进程,其他应用的组件不可以和他跑在同一个进程中,而进程名不是 : 开头的进程属于全局进程,其他应用通过ShareUID方式可以和他跑在同一个进程中。
方法二:非常规方法,通过JNI在native层去fork一个新的进程。(fork 拷贝一个)
带来的问题:
(1) 静态成员和单例模式完全失效。
(2) 线程同步机制完全失效。
(3) SharePreferences的可靠性下降。
(4) Application 会多次创建。
这里说一下第四点,运行在同一个进程中的组件是属于同一个虚拟机和同一个application的,同理,运行在不同进程中的组件是属于不同的虚拟机和不同的application的。
IPC机制基础知识
IPC:Inter-Process Communication 含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。
进程:一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用。
线程:CPU调度的最小单元,同时线程是一种有限的系统资源,一个几进程可以有多个线程。
注意:在android中主线程也叫UI线程,不可以做耗时任务,否则会引发ANR:Application Not Responding
为何要多进程:
第一:一个应用因为某些原因需要采用多进程模式来实现,比如APP中广告拦截和下载,需要运行在单独的进程中,避免这些模块死掉而影响主程序Crash,其他情况还有比如插件 模块。
第二:为了加大一个应用可使用的内存空间需要多进程来获取多分内存空间。
第三:当前应用需要向其他应用获取数据。
如何开启多进程:
方法一:给四大组件指定android:process属性,
注意:
android:process="com.yxx.ipc.remote"和android:process=":remote"
这两种方式的区别在于:
第一:进程名不同:一个是com.yxx.ipc.remote 另一个是com.yxx.ipc:remote
第二:使用:的为简写,含义是指要在当前的进程 名前面附上当前的包名。另一种则不会。
第三:进程以 : 开头的属于当前应用的私有进程,其他应用的组件不可以和他跑在同一个进程中,而进程名不是 : 开头的进程属于全局进程,其他应用通过ShareUID方式可以和他跑在同一个进程中。
方法二:非常规方法,通过JNI在native层去fork一个新的进程。(fork 拷贝一个)
带来的问题:
(1) 静态成员和单例模式完全失效。
(2) 线程同步机制完全失效。
(3) SharePreferences的可靠性下降。
(4) Application 会多次创建。
这里说一下第四点,运行在同一个进程中的组件是属于同一个虚拟机和同一个application的,同理,运行在不同进程中的组件是属于不同的虚拟机和不同的application的。
IPC机制基础知识