jeanboydev/Android-ReadTheFuckingSourceCode

JAVA 序列化

7449 opened this issue · 1 comments

7449 commented

Java中,有两种方式可以实现序列化,既可以实现Serializable接口,也可以实现Parcelable接口。然而,
在Android中,我们不应该使用Serializable接口。因为Serializable接口使用了反射机制,这个过程相对缓
慢,而且往往会产生出很多临时对象,这样可能会触发垃圾回收器频繁地进行垃圾回收。相比而言,
Parcelable接口比Serializable接口效率更高,性能方面要高出10x多倍。

  • 修改如下

    Java中,只有一种方式可以实现序列化,只需要实现Serializable接口。

    Android中,还有另外一种实现序列化的方式,实现Parcelable,这个是android独有的一种序列化方
    方式,相比较Serializable, Parcelable需要提供大量的模板代码,较为繁琐,但是效率比Serializable高出不少,因为Serializable实现的序列化利用反射,可能会进行频繁的IO操作,所以消耗比较大。而Parcelable则是在内存中进行序列化

所以这里推荐的是:

内存序列化优先选择Parcelable

存储到设备优先选择Serializable(这里推荐使用json方式加密保存在本地,比较简单)

@7449 已采纳,感谢您的建议!