Android-序列化,Parcelable,Serializable
来源:互联网 发布:mac能玩ff14 编辑:程序博客网 时间:2024/05/15 04:26
序列化可以将一个对象的状态写入到byte流中,并且可以从其他地方将这个byte流重新构造成原对象。这样让我们可以通过网络传递对象,可以将对象固化,写入数据库。
在Android中Intent可以传递序列化对象。
bundle.putSerializable("objectA", objA);bundle.putParcelable("objectB", objB);
在Android中有两种序列化方式
public class ObjectB implements Parcelable
public class ObjectA implements Serializable
Android推荐使用Parcelable:
在使用内存时,Parcelable的性能更高。使用Serializable时,会产生大量的临时变量,频繁的引起系统GC。但是,如果需要将对象存储在磁盘上的时候,需要使用Serializable,因为Parcelable不能很好的保持数据的持续性。
在使用Parcelable时需要注意:
写入的顺序和读取的顺序要一致,boolean类型要做处理,这行代码中的static final一个不能少CREATOR一定要大写。
public static final Parcelable.Creator<T> CREATOR
下面是一个Parcelable的例子:
package com.sunrui.testb;import android.os.Parcel;import android.os.Parcelable;public class ObjectB implements Parcelable {private String name;private int age;private boolean flag;public ObjectB() {}// 读取的顺序要和写入的顺序保持一致public ObjectB(Parcel source) {name = source.readString();age = source.readInt();int i = source.readInt();if (i == 1) {flag = true;} else if (i == 0) {flag = false;}}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public boolean isFlag() {return flag;}public void setFlag(boolean flag) {this.flag = flag;}@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeString(name);dest.writeInt(age);// boolean类型需要特殊处理if (flag) {dest.writeInt(1);} else {dest.writeInt(0);}}public static final Parcelable.Creator<ObjectB> CREATOR = new Creator<ObjectB>() {@Overridepublic ObjectB createFromParcel(Parcel source) {return new ObjectB(source);}@Overridepublic ObjectB[] newArray(int size) {return new ObjectB[size];}};@Overridepublic String toString() {return "ObjectB [name=" + name + ", age=" + age + ", flag=" + flag+ "]";}}
0 0
- Android-序列化,Parcelable,Serializable
- Android Serializable Parcelable 序列化
- Android 序列化Serializable、Parcelable
- Android序列化:Serializable & Parcelable
- Android序列化Parcelable、Serializable
- Android序列化:Parcelable/Serializable
- Android -序列化 : Serializable / Parcelable
- Android序列化:Serializable Parcelable
- android序列化 Parcelable和Serializable接口
- Android 序列化 Parcelable 跟 Serializable
- android序列化Serializable、Parcelable(一)
- Android序列化:Serializable和Parcelable详解
- Android 序列化 Parcelable和Serializable 浅谈
- Android使用序列化接口Parcelable、Serializable
- Android使用序列化接口Parcelable、Serializable
- Android使用序列化接口Parcelable、Serializable
- Android序列化Serializable和Parcelable区别
- android序列化之Serializable,Parcelable
- android 耳机按钮监听
- 获取屏幕和布局的高宽度
- [JS]jQuery中attr和prop方法的区别
- Spring 事物管理
- linux中memcpy和strcpy的区别
- Android-序列化,Parcelable,Serializable
- 如何自定义kindeditor编辑器的工具栏items即去除不必要的工具栏或者保留部分工具栏
- 数据库的三种范式通俗易懂的解释
- 设计兼容不同的屏幕尺寸的Android界面
- RGB灯WS2812B
- v4l2
- 802.11n常见问题解答(英文) 点击进入:技术文摘 专栏 添加时间: 2010-5-17 10:13:57 阅读数: 5354
- weblogic10启动时的JVM问题
- git push出现unpack failed: error Missing tree错误的解决方法