Android 使用Parcelable传递对象
来源:互联网 发布:荼靡 知乎 编辑:程序博客网 时间:2024/06/05 05:25
Parcelable接口
Parcelable接口用来将一个类变成可序列化对象。大家都知道,java中还提供了一种方法使对象可序列化,就是Serializable接口。两者的区别在于:Serializable接口是为要存储在数据库,用于网络传输,保存类属性到本地的类设计的。但是Serializable在android中使用效率较低。所以Android中出现了Parcelizable接口来代替Serializable接口,Parclizable接口可实现对象在进程间,组件间高效的传递。
使用方法
使用Parcelizable比Serializable实现更多的方法。想贴一个完整代码:
public class CookInfo implements Parcelable { private String title; private String description; private String season; private Bitmap picture; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(title); dest.writeString(description); dest.writeString(season); dest.writeParcelable(picture, flags); } public static final Creator<CookInfo> CREATOR = new Creator<CookInfo>() { @Override public CookInfo createFromParcel(Parcel in) { CookInfo ci = new CookInfo(); ci.title = in.readString(); ci.description = in.readString(); ci.season = in.readString(); ci.picture = in.readParcelable(Bitmap.class.getClassLoader()); return ci; } @Override public CookInfo[] newArray(int size) { return new CookInfo[size]; } }; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getSeason() { return season; } public void setSeason(String season) { this.season = season; } public Bitmap getPicture() { return picture; } public void setPicture(Bitmap picture) { this.picture = picture; }}
主要要实现:
- describeContents() 方法:直接返回0就可以了
- writeToParcel() 方法:需要用 dest.writeXXX() 方法写类中的每一个属性,当然 writeXXX 要符合属性的类型。基本类型大家都知道,如果要写入的属性同样是一个自定义对象,则该对象也必须继承 Parcelizable接口。
- 静态 Creator 对象:需要实现2个方法,createFromParcel() 和 newArray() 方法。
createFromParcel() 方法需要自己创建一个自身实例对象,然后用Parcel的readXXX() 方法再读取到实例中,然后返回实例。newArray() 方法是在初始化一个Parcelizable列表时使用。
大家看代码自己体会一下吧!
0 0
- Android使用Parcelable传递对象
- Android 使用Parcelable传递对象
- android intent传递Parcelable对象
- Android使用Parcelable传递对象方法及注意事项
- Android使用Parcelable传递对象方法及注意事项
- Android 使用Parcelable接口在进程间传递对象
- Android之使用 Intent 传递对象(一)Parcelable 方式
- android之传递对象(Parcelable,Serializable)
- android之传递对象(Parcelable,Serializable)
- Android中Intent传递对象(Serializable,Parcelable)
- Android Intent传递对象 Serializable & Parcelable
- 使用 Intent传递对象(Parcelable方式)
- 使用Serializable和 parcelable传递对象
- Android中使用Parcelable传递对象,createFromParcel中对象的赋值次序
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
- the 4th national media processing meeting
- 商业英语句型09
- this,this,再次讨论javascript中的this,超全面
- 锯齿数独 cocos2d-x 开发 (二)
- POJ-1975 Median Weight Bead(Floyed)
- Android 使用Parcelable传递对象
- 盘点即时战略游戏中高实用性寻路算法
- java151229ExceptionTest
- 2016-01-06 09:42:53.547:WARN:oejs.HttpChannel:qtp2109938810-27: Could not send response error 500: j
- ES6学习——新的语法:Symbols——Symbol.toPrimitive,Symbol.hasInstance,Symbol.toStringTag,Symbol.species
- MFC中Unicode与多字节编码中遇到的CString与char或char*的转化问题
- Spring+Hibernate声明事务
- java自动装箱拆箱总结
- UE4 Hello Slate