永发信息网

Android Parcelable和Serializable的区别

答案:2  悬赏:0  手机版
解决时间 2021-02-08 15:19
  • 提问者网友:聂風
  • 2021-02-07 14:38
Android Parcelable和Serializable的区别
最佳答案
  • 五星知识达人网友:廢物販賣機
  • 2021-02-07 15:22
在Android的Intent中传递实体的时候,需要对对象进行序列化,然后通过Bundle的putSerializable()、getSerializable()或者putParcelable()、getParcelable()方法实体存储和取出,方便我们在两个不同Activity之间传递实体,序列化的方式有:实现Parcelable、实现Serializable

1、Parcelable需要实现重写:writeToParcel(Parcel dest, int flags) 方法、 Parcelable.Creator内部类的 createFromParcel方法,例如:
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(phoneName);
dest.writeFloat(phonePrice);
dest.writeFloat(sdkVersion);
}
public static final Parcelable.Creator CREATOR = new Creator() {
@Override
public Phone createFromParcel(Parcel source) {
Phone phone=new Phone();
phone.phoneName=source.readString();
phone.phonePrice=source.readFloat();
phone.sdkVersion=source.readFloat();
return phone;
}

2、Serializable只需要实现当前接口,不用重写任何方法,使用比较简单,推荐是Serializable实现序列化操作
全部回答
  • 1楼网友:想偏头吻你
  • 2021-02-07 16:03
两种都是用于支持序列化、反序列化话操作,两者最大的区别在于存储媒介的不同,serializable使用io读写存储在硬盘上,而parcelable是直接在内存中读写,很明显内存的读写速度通常大于io读写,所以在android中通常优先选择parcelable。 在android中实现parcelable接口的类可以支持序列与反序列化,以下是一个实现的举例: 1. 实现parcelable接口 2. 添加实体属性 3. 覆写writetoparcel(parcel dest, int flags)方法,指定写入parcel类的数据。 4. 创建parcelable.creator静态对象,有两个方法createfromparcel(parcel in)与newarray(int size),前者指定如何从parcel中读取出数据对象,后者创建一个数组。 5. 覆写describecontents方法,默认返回0。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯