永发信息网

Android Parcelable和Serializable的区别

答案:2  悬赏:0  手机版
解决时间 2021-02-08 15:19
Android Parcelable和Serializable的区别
最佳答案
在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实现序列化操作
全部回答
两种都是用于支持序列化、反序列化话操作,两者最大的区别在于存储媒介的不同,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。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
CO有几条共价键
慧光儿童摄影这个地址在什么地方,我要处理点
知理谦让的意思
为什么都要选择做长线品牌, 爆款不好做吗?
一句超短话翻译,有加分哦Leaves in a storm a
警号jj开头的是什么警察
刀塔传奇no user id重启游戏和重启手机都解决
品牌折扣店地址在哪,我要去那里办事
我读书读傻了 怎么办,为什么中国读书 会使人
男人奶房有硬块是什么意思
中石化防邕路加油站地址在哪,我要去那里办事
文品屋在什么地方啊,我要过去处理事情
证明:直角三角形三边(均为自然数)之积可以
虚拟现实概念股龙头 vrar概念股有哪些
佳能70d 能配50 1.4吗
推荐资讯
星洲·东湖花苑东门在什么地方啊,我要过去处
瑞丰招待所(铜仁碧江区)怎么去啊,我要去那办
梦见狗把我当犯人捉是什么意思
仰璇宾馆地址有知道的么?有点事想过去
学理科有哪些科目?会考考哪些科目?学理科的
名雅足疗按摩在哪里啊,我有事要去这个地方
东方木业地址有知道的么?有点事想过去
宝宝可以喝矿泉水吗
在农村有房老无户的拆近怎样补
魅丽内衣家居生活馆NO.058在哪里啊,我有事要
热毒,要怎么去饮食的说?
影响家庭教育方式的因素有哪些
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?