进程通讯的几种方式
来源:互联网 发布:快手解析软件 编辑:程序博客网 时间:2024/05/21 06:12
android中每个应用都是一个独立进程,系统为它们分配独立的虚拟机,application以及内存空间。不同进程间不能共享内存,每个进程都要至少有一个线程。
IPC:Inter-Process Communication进程间的通讯,进程间数据交换的过程。
进程的分类:
1:前台进程
2:可见进程
3:服务进程
4:后台进程
5:空进程
当系统内存不足时,会从下往上的杀死进程回收内存。前台进程和可见进程系统宁愿报错,也不会回收它们。
开启进程的方式:
在配置文件manifest里面指定四大组件(activity,service,broadcast,content provider)的属性android:process所在的进程。
例如:
<activity android:name="com.wyq.solution.SecondActivity" android:label="@string/app_name" android:process=":remote"/><activity android:name="com.wyq.solution.Third" android:label="@string/app_name" android:process="com.wyq.solution.remote"/>
两种方式的区别:1:“:”当前进程的名字时当前包名+remote thrid进程名字是一个完整的命名方式
2:进程名以“:”开头的进程是私有进程 其他应用的组件不可以和他跑在同一个进程中,进程名不以“:”开头的进程属于全局进程其他应用通过shareuid方式可以和它跑在一个进程中。
两个应用通过ShareUID 方式跑在同一个进程中要求:1:相同的ShareUID 2:签名相同 此时可以共享互相的私有数据 data目录 组件信息 内存数据类似一个应用的两部分
多进程的影响:
1:静态成员和单例模式完全失效
2:线程同步机制完全失效
3:sharedpreference 不安全 读写xml不支持并发操作
4:application 多次创建
序列化方式:
1:java提供的serializable
serialVersionUID作用:序列化时系统会将当前类的serialVersionUID写入到序列化的文件中 当反序列化的时候系统会检查文件中的serialVersionUID看他是否与当前类一致,如果一致说明没有变化可以序列化,否则说明当前类与序列化类相比发生了变化无法发序列化。我们应该手动去指定serialVersionUID,如果不手动指定当类发生变化就会失败报错,手动指定后当前类改变了比如新加成员变量 删除了某个属性 还是可以恢复数据。
2:android提供的parcelable
序列化的是实例 静态成员不参与序列化过程。
二者区别:serializable整体实例序列化 大量i/o性能低 如果持久化到设备上使用serializable否则使用parcelable
IPC方式:
1:intent隐式启动一个进程 只能传输数据
2:文件共享 不适合高并发 不能做到进程间及时通讯
3:Messenger 串行的通讯方式
4:AIDL 功能强大 适合并发,运行在binder线程池中 可以调用方法
5:SOCKET 字节流,网络通讯
- 进程通讯的几种方式
- 进程间通讯的几种方式
- 进程通讯的几种方式
- 进程间通讯的几种方式
- Android进程通讯的几种方式
- linux进程间通讯的几种方式
- [linux] linux进程间通讯的几种方式
- [linux] 进程间通讯的几种方式
- Linux进程间通讯的几种方式
- Linux进程间通讯的几种方式
- 进程间的几种通讯方式Code
- Linux进程间通讯的几种方式
- 面试之路---几种进程间的通讯方式
- Linux进程间通讯的几种方式
- 进程间通讯几种方式
- 进程之间通讯的几种方法
- 进程之间通讯的几种方法:
- 进程之间通讯的几种方法:
- ACM题目分类
- mysql函数大全
- wireshark抓取本机包
- 杭电ACM题目分类
- 数组的全排列
- 进程通讯的几种方式
- 简单记录,Notification.builder的简单实用
- LeetCode——006
- xib
- tornado实现在JS文件的国际化和静态文件的引用
- 面试题86:八数码问题
- bzoj 4520: [Cqoi2016]K远点对 k-d tree
- Spring mvc实现验证码
- C++标准库和标准模板库