serializable和Parcelable
1.首先搞清楚为什么要序列化: 为了传递对象;
因为intent要想传递对象的话,那么这个对象一定是实现了Serializable或Parcelable接口的;
2.他们俩有啥区别呢:
Serializable是Java自带的,将一个对象传化成可传输或可存储的状态,可以用于网络传输,以及本地存储等;
Parcelable是专门为Android服务的,是将一个完整的对象分解,每一部分都是Intent所支持的传输类型,这样就能达到传输对象的目的了;Parcelable能达到永久性的保存对象到本地文件,也能实现网络传输对象;
下面举一个Serializable的例子:
原理(通过write方法序列化,read方法反序列化;Parcelable也是如此):
(人不去指定,默认情况下)***:原则上序列化后的***和之前的***相同才能正常的被反序列化;
注意一点:应该手动指定***,因为如果类的结构发生改变,尽管还是符合上面的原则,但反序列化还是会失败,因为类结构已经发生了改变
首先创建一个实现了Serializable接口的一个对象;(里面很多方法都采用了JavaBean的形式)
然后就可以在Intent中传递这个实现了Serializable接口的对象了:
接收对象的那端是怎么实现的?
Parcelable:
原理:通过writetoparcel()方法来序列化,CREATOR中反序列化;
然后也是一样,在intent中发送实现了Parcelable接口的对象;
最后接受intent的类中:
选择序列化的原则