ipc机制
2016-02-17 19:28:11 0 举报
AI智能生成
android的ipc
作者其他创作
大纲/内容
ipc机制
android多进程概念及开发注意事项
开启多进程
在四大组件中配置android:progress
例如:android:progress=\":remote\"android:progress=\"com.example.remote\"两者区别在于以\":\"方式的是私有进程其他组件不能和他跑在同一个进程中后者则是全局进程可以通过shareUID的方式和他跑在同一个进程里
多进程的运行机制
每一个进程都运行在单独的虚拟机中,其中所有的类互不干扰,其中一个进程改变了类成员的数据,其他进程看不到
多进程所造成的问题
1.静态成员单例模式会失效
多个进程类中所有成员互不干扰
2.线程同步机制失效
同上
3.SharedPreferences不安全
底层使用读写xml实现,因为不能不保证线程安全,所以读写不安全
4.Application会创建多次
每个进程都有一个单独的虚拟机也就相当于多个应用程序,所以会创建多次
android序列化机制
1.Serializable接口
需要序列化的类实现该接口
注意指定serialVersionIID方便类结构调整时最大限度的恢复数据
静态成员和声明了transient的成员不属于序列化范围内
若要改变系统默认序列化过程需要重写writeObject和readObject方法即可,一般不用重写
序列化与反序列化实现原理
序列化会将当前类的serialVersionID写入文件中,反序列会的时候对比SeriaVersionID和当前类serialVersionID相同则说明序列化的版本和当前类版本一直然后反序列化,否则不一致报错报错
Parcelable接口
1.序列化通过writeToParcel完成
2.反序列化通过CREATOR完成
3.内容描述由describeContents完成一般都返回0如果需要描述返回1
两者区别
Serializable一般用于网络传输或者序列化到存储设备中
Parcelable一般用于内存序列化
binder
aidl自动生成类和属性,方法的含义
1.DESCRIPTOR
Binder的唯一标识,是当前类的报名
2.asInterface
将服务端的Binder对象转换为客户端需要的AIDL接口类型,如果服务端和客户端在同一个进程中返回Stub对象本身,否则返回系统封装后的Stub.proxy
3.onTransact
通过参数code来判断客户端请求的是哪个方法,从参数data中取出客户端传入请求方法的参数,然后执行请求方法,接着将客户端请求方法的结果写入reply中,最后返回boolean值,如果返回为false客户端请求会失败
4.Proxy$getBookList
进程通信方式
0 条评论
回复 删除
下一页