Intent传递对象之Serializable和Parcelable的区别

2019-12-10 19:14:18王旭
Intent在不同的组件中传递对象数据的应用非常普遍,大家都知道在intent传递对象的方法有两种:1、实现Serializable接口、2、实现Parcelable接口,接下来通过本文给大家介绍Intent传递对象之Serializable和Parcelable的区别,感兴趣的朋友一起学习吧  

Intent在不同的组件中传递对象数据的应用非常普遍,大家都知道在intent传递对象的方法有两种:1、实现Serializable接口、2、实现Parcelable接口。

Android中Intent传递对象的两种方法Serializable,Parcelable请点击了解详情。

为什么要将对象序列化?

1、永久性保存对象,保存对象的字节序列到本地文件中;
2、用过序列化对象在网络中传递对象;
3、通过序列化对象在进程间传递对象。

1、实现Serializable接口

Serializable的作用是将数据对象存入字节流当中,在需要时重新生成对象,主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象等。

implements Serializable接口的的作用就是给对象打了一个标记,系统会自动将其序列化。

案例1:

1)User.java (implements Serializable )

2)MainActivity.java

User user = new User();
Intent intent = new Intent(this,Second.class); 
intent.putExtra("user",user);

3)Second.java

Intent intent = getIntent();
User user = intent.getSerializableExtra("user");

2、实现Parcelable接口

1)为什么要实现Parfcelable接口来实现在Intent中传递对象?
a、在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable类。
b、Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。

注意:Parcelable不能使用在将数据存储在磁盘上的情况,因为Parcelable不能很好的保存数据的持续性在外界有变化的情况下。因此在这种情况下,建议使用Serializable