Android IPC方式
来源:互联网 发布:网络打印机a3怎么设置 编辑:程序博客网 时间:2024/06/09 21:30
基础部分
序列化
Serializable
java提供的,使用简单,但是内存开销大,序列化反序列化大量IO操作
最好定义serialVersionUID,否则反序列化可能失败,原因,百度。
private static final long serialVersionUID = 1L;
Parcelable
android做了优化,开销小,推荐方式,但是使用麻烦,怎么使用百度。
同时主要用于序列化到内存上,如果要序列化到存储设备或者网络上,也可以但是使用更麻烦,这个时候推荐使用Serializable方式
总结一下:
- 如果序列化到存储设备或者网络,推荐使用Serializable方式
- 其它情况,尽量用Parcelable方式
IPC方式
使用Bundle
这个就不多说了,基本类型,String,实现了Serializable,Parcelable接口的都可以传入Bundle,适用于四大组件之间的通信
使用文件共享
一个进程序列化一个对象到本地存储文件,另一个进程然后反序列化读取文件,就可实现进程间通信
缺点是,文件读取支持并发的,所以可能造成多个进程间读写不同步的问题。缺点实时性不好
同时SharedPreferences是个特例,虽然也是以xml的形式存储在文件中,但是SharedPreferences并不是直接写文件,而是先写内存缓存,然后在commit的时候,才会去写文件,所以在多进程模型下,很可能会造成数据丢失,所以不推荐用于进程通信
看这里《Android应用Preference相关及源码浅析(SharePreferences篇)》
使用Messenger
用的少,看这里 《Android应用进程间通信之Messenger信使使用及源码浅析 》
说明一点,底层采取IBinder机制,同时一次只处理一个请求,所以是串行处理的,所以不用考虑同步并发的问题。。
挖个坑,没时间去看源码,以后碰到了再研究
使用AIDL
看这里《Android IBinder机制简单介绍 》
使用ContentProvider
就是专门用于不同应用间进行数据共享的,底层实现还是IBinder,操作数据库,CRUD,增删改查操作
使用Socket
这个就是web编程中的服务器端客户端socket编程的方式了
分两种,TCP/UDP socket通信
服务器端可以通过service一直监听是否有socket连接过来
- Android IPC方式
- android 中的IPC方式
- Android中的IPC方式
- Android的IPC方式
- Android的IPC方式
- Android中的IPC方式
- Android中的IPC方式
- Android的IPC方式
- Android中的IPC方式
- Android中的IPC方式
- Android中的IPC方式
- Android中的IPC方式
- Android中的IPC方式
- Android 中的 IPC方式
- Android IPC方式 Bundle实现
- Android中的IPC方式AIDL
- android的IPC方式 总结
- android IPC通信方式简述
- 最好用的PHP数据库操作类-ezSQL
- java/List
- 数据结构实践——B-树的基本操作
- Linux命令学习笔记(2)----more命令
- iOS中的文件I/O
- Android IPC方式
- sun关于tmp文件的描述
- 位图法排序
- c++运算符重载
- IOS 手势之左右滑动UISwipeGestureRecognizer
- GHOST 博客安装中文全攻略
- Solr初级教程
- 15泛型_15.1与C++比较
- Java的接口问题