Android序列化对象主要有两种方法,实现Serializable接口、或者实现Parcelable接口。实现Serializable接口是
Java
SE本身就支持的,而Parcelable是Android特有的功能,效率比实现Serializable接口高,而且还可以用在IPC中。实现
Serializable接口非常简单,声明一下就可以了,而实现Parcelable接口稍微复杂一些,但效率更高,推荐用这种方法提高性能。下面就介
绍一下实现Parcelable接口的方法
通过实现Parcelable接口序列化对象的步骤:
1、声明实现接口Parcelable
2、实现Parcelable的方法writeToParcel,将你的对象序列化为一个Parcel对象
3、实例化静态内部对象CREATOR实现接口Parcelable.Creator:
-
public
static
final
Parcelable.Creator<T> CREATOR
其中public static final一个都不能少,内部对象CREATOR的名称也不能改变,必须全部大写。
4、完成CREATOR的代码,实现方法createFromParcel,将Parcel对象反序列化为你的对象
简而言之:通过writeToParcel将你的对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成你的对
象。也可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面,在通过createFromParcel从流里读取对象,只不
过这个过程需要你来实现,因此写的顺序和读的顺序必须一致。
Parcel对象可以通过以下方法写入或读取byte, double, float, int, long, String这6种类型变量。
-
writeByte(
byte
), readByte()
-
writeDouble(double
), readDouble()
-
writeFloat(float
), readFloat()
-
writeInt(int
), readInt()
-
writeLong(long
), readLong()
-
writeString(String), readString()
也可以读取或写入他们的数组
-
writeBooleanArray(
boolean
[]), readBooleanArray(
boolean
[]), createBooleanArray()
-
writeByteArray(byte
[]), writeByteArray(
byte
[],
int
,
int
), readByteArray(
byte
[]), createByteArray()
-
writeCharArray(char
[]), readCharArray(
char
[]), createCharArray()
-
writeDoubleArray(double
[]), readDoubleArray(
double
[]), createDoubleArray()
-
writeFloatArray(float
[]), readFloatArray(
float
[]), createFloatArray()
-
writeIntArray(int
[]), readIntArray(
int
[]), createIntArray()
-
writeLongArray(long
[]), readLongArray(
long
[]), createLongArray()
-
writeStringArray(String[]), readStringArray(String[]), createStringArray()
-
writeSparseBooleanArray(SparseBooleanArray), readSparseBooleanArray()
更多操作可以参阅:
http://developer.android.com/reference/android/os/Parcel.html
示例代码:
-
package
com.ipjmc.demo.parcelable;
-
-
-
import
java.util.Date;
-
-
import
android.os.Parcel;
-
import
android.os.Parcelable;
-
-
public
class
ParcelableDate
implements
Parcelable {
-
-
-
public
long
mId;
-
public
Date mDate;
-
-
public
ParcelableDate(
long
id,
long
time) {
-
mId = id;
-
mDate = new
Date(time);
-
}
-
-
public
ParcelableDate(Parcel source) {
-
-
mId = source.readLong();
-
mDate = new
Date(source.readLong());
-
}
-
-
@Override
-
public
int
describeContents() {
-
return
0
;
-
}
-
-
-
@Override
-
public
void
writeToParcel(Parcel dest,
int
flags) {
-
-
dest.writeLong(mId);
-
dest.writeLong(mDate.getTime());
-
}
-
-
-
public
static
final
Parcelable.Creator<ParcelableDate> CREATOR =
new
Creator<ParcelableDate>() {
-
-
@Override
-
public
ParcelableDate[] newArray(
int
size) {
-
return
new
ParcelableDate[size];
-
}
-
-
-
@Override
-
public
ParcelableDate createFromParcel(Parcel source) {
-
return
new
ParcelableDate(source);
-
}
-
};
-
}
分享到:
相关推荐
1. AIDL只能传递基本数据类型、Parcelable对象和实现了Parcelable接口的数组。 2. 当传递复杂的对象结构时,需要确保所有对象都实现了Parcelable。 3. 跨进程通信可能会有性能开销,因此应谨慎使用。 4. 服务端需要...
Android提供了两种主要的序列化方式:`Serializable`和`Parcelable`。本文将深入探讨`Parcelable`,它是Android平台中效率更高的序列化接口。 **一、Parcelable简介** `Parcelable`是Android系统提供的一个接口,...
`Parcelable`是Android系统提供的一种高效的数据序列化方式,相比Java的`Serializable`接口,它的性能更优,因为`Parcelable`在序列化和反序列化时提供了更直接的内存操作。本篇文章将详细探讨`Parcelable`在Android...
在Android studio 4.0+以后在插件中已经搜索不到Android Parcelable code generator这个超级好用的插件了,唯一能使用的方式就是下载离线插件包,进行离线安装。 File -> Settings -> Pugins -> Install plugin from...
Android开发中的Parcelable接口是用于对象序列化的一种高效方式,它比Java自带的Serializable接口性能更好,但编写起来较为繁琐。`android-parcelable-intellij-plugin`是一个IntelliJ IDEA的插件,它可以帮助开发者...
本教程将深入探讨如何使用AIDL进行进程间通信,并重点讲解如何传递Parcelable数据。 首先,让我们了解AIDL的基本概念。AIDL文件是一种特殊的文本文件,使用类似于Java的方法声明来定义服务接口。当编译项目时,...
在Android开发中,Parcelable接口是Android系统提供的一种高效的数据序列化方式,相比于Serializable接口,它在传递和存储数据时性能更高。本案例将探讨如何创建一个简单的Parcelable学生类,以便在Activity之间传递...
本文将深入探讨两种主要的序列化方式:Serializable和Parcelable,并比较它们的优缺点以及适用场景。 首先,我们来了解什么是序列化。序列化是将对象的状态转换为可存储或可传输的形式的过程。在Android中,这个...
GsonFormat、ButterKnife和Parcelable是三个非常实用的Android Studio插件,它们可以帮助开发者快速、高效地处理常见的编程任务。 1. GsonFormat GsonFormat是一个Android Studio插件,主要用于自动生成Gson序列化...
此时,可以采用更高效的Parcelable接口来实现跨进程通信(IPC,Inter-Process Communication)。本主题将深入探讨如何通过实现Parcelable接口来传递复杂数据。 首先,了解Parcelable接口的基本概念。Parcelable是...
Android提供了两种主要的序列化方式:Parcelable和Serializable。这两种方式都可以将对象转换为字节流,便于存储、传输或恢复。下面将详细讨论Android通过Parcelable和Serializable实现各种类型嵌套序列化的方法。 ...
Parcelable是Android平台提供的一种高效的数据序列化方式,比传统的Serializable接口性能更好,但使用起来也相对复杂。本文将深入探讨Android中的Parcelable接口及其序列化流程。 首先,`Parcelable`接口是Android...
在Android开发中,Parcelable接口是Android系统提供的一种高效的数据序列化方式,相比于Java中的Serializable接口,它在数据传输和保存时具有更高的性能。本示例"ParcelableDemo"将详细介绍如何在Android应用中使用...
通常,我们使用Intent对象来完成这一任务,而Intent支持多种数据类型,包括基本类型、Parcelable接口实现的类以及Serializable接口实现的类。`Parcelable`是Android提供的一种高效的数据序列化方式,相比`...
android parcelable code generator
本篇文章将深入探讨如何使用AIDL(Android Interface Definition Language)、Parcelable接口以及如何实现远程服务,这些都是Android Service开发中的关键知识点。 首先,我们来谈谈AIDL。AIDL是Android系统提供的...
在Android开发中,Parcelable接口是用于对象序列化的一种高效机制,相比Java的Serializable接口,它在数据传输和存储时性能更高。"parcelable android demo"是一个实战项目,旨在帮助开发者理解并掌握Parcelable的...
通常,我们使用Intent来在不同Activity之间传递数据,但当需要传递复杂对象时,如自定义的Java对象,就需要使用到Parcelable接口。这个压缩包文件"实现Parcelable接口的方式借助Intent实现Android工程中Activity之间...
在Android开发中,Parcelable接口是用于对象序列化的一种高效机制,相比于Java的Serializable接口,它在数据传输或者存储时提供了更高的性能。理解并熟练使用Parcelable对于优化应用性能至关重要。 Parcelable接口...