前言
我们程序员之所以担心35岁被裁员,是因为自己的经验和实力能力不符合,国内IT现状,大多数程序员都在外包公司工作,框架老化,代码就是为了完成任务而写,刚定好需求你做一半产品突然让你改需求……一切的一切,导致你每天都在重复基础的增删改查和简单业务处理,身边的人不如你甚至比你更烂,你找不到一个方向去提升自己,日复一日,虽然你工作好久,但是你对深一层次的代码依然一无所知,看不懂源码,写不出好的代码,该会的都会了,该不会还是不会,三年前是这样,三年后还是这样,没什么变化。
1、作用
Serializable
的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方 便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的 Parcelable
的设计初衷是因为Serializable
效率过慢,为了在程序内不同组件间以及 不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在, Parcelable
是通过IBinder
通信的消息的载体。
从上面的设计上我们就可以看出优劣了
2、效率及选择
Parcelable
的性能比Serializable
好,在内存开销方面较小,所以在内存间数据传输 时推荐使用Parcelable
,如activity
间传输数据,而Serializable
可将数据持久化方便 保存,所以在需要保存或网络传输数据时选择Serializable
,因为android不同版本 Parcelable
可能不同,所以不推荐使用Parcelable
进行数据持久化。
3、编程实现
对于Serializable
,类只需要实现Serializable
接口,并提供一个序列化版本 id(serialVersionUID)
即可。而Parcelable
则需要实现writeToParcel
、 describeContents
函数以及静态的CREATOR变量,实际上就是将如何打包和解包 的工作自己来定义,而序列化的这些操作完全由底层实现。
最后我还整理了很多Android中高级的PDF技术文档。以及一些大厂面试真题解析文档。需要的朋友都可以点击GitHub直接获取方式
Android高级架构师之路很漫长,一起共勉吧!