- 浏览: 43119 次
- 性别:
- 来自: 北京
最新评论
一:
转自: http://blog.sina.com.cn/s/blog_78e3ae430100pxba.html
}
二:
转自:http://ipjmc.iteye.com/blog/1314145
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()
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()
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 { //声明实现接口Parcelable
- //这里定义了两个变量来说明读和写的顺序要一致
- public long mId;
- public Date mDate;
- public ParcelableDate(long id, long time) {
- mId = id;
- mDate = new Date(time);
- }
- public ParcelableDate(Parcel source) {
- //先读取mId,再读取mDate
- mId = source.readLong();
- mDate = new Date(source.readLong());
- }
- @Override
- public int describeContents() {
- return 0;
- }
- //实现Parcelable的方法writeToParcel,将ParcelableDate序列化为一个Parcel对象
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- //先写入mId,再写入mDate
- dest.writeLong(mId);
- dest.writeLong(mDate.getTime());
- }
- //实例化静态内部对象CREATOR实现接口Parcelable.Creator
- public static final Parcelable.Creator<ParcelableDate> CREATOR = new Creator<ParcelableDate>() {
- @Override
- public ParcelableDate[] newArray(int size) {
- return new ParcelableDate[size];
- }
- //将Parcel对象反序列化为ParcelableDate
- @Override
- public ParcelableDate createFromParcel(Parcel source) {
- return new ParcelableDate(source);
- }
- };
- }
发表评论
-
Android的onSaveInstanceState和onRestoreInstanceState用法
2012-03-17 16:40 1149很多不明白Activity类中包含的onSaveInstanc ... -
Android的PreferenceActivity
2012-03-16 15:40 759在开发应用程序的过程中我们有很大的机会需要用到参数设置功能,那 ... -
Android原理揭秘系列之VacantCell缓存
2012-03-15 11:01 806操作过Android手机的朋友应该对在待机界面拖动图标的交互效 ... -
android view的一些常用触发方法
2012-02-28 21:23 1186onFinishInflate() 当View中所有的子控件 ... -
在android模拟器中删除系统应用程序
2012-02-27 21:38 2331首先启动android模拟器。 打开cmd命令行窗口。 ... -
使用Android的 hidden API
2012-02-26 17:17 2313Hidden API之所以被隐藏,是想阻止开发者使用SDK中那 ... -
使用LinkedHashMap构建LRU的Cache
2012-02-24 14:44 1447顾名思义LinkedHashMap ... -
Android Thumbnail 技术介绍
2012-02-23 16:35 1374Android Thumbnail Images ... -
四大主流移动开发框架介绍
2011-04-08 09:27 715移动Web开发语言被称为 ... -
Android应用程序打包签名
2011-04-02 22:43 1361转自: http://www.cppblog.com/fwxj ... -
学习Android的几大主攻方向
2011-04-02 16:50 871“苹果(Apple)公司的应用程序商店(app store)和 ... -
Android开发环境搭建
2011-03-31 21:22 921一、软件、开发包清单 Android开发首先需要搭建完 ...
相关推荐
《Android Parcelable IntelliJ 插件详解》 在Android开发过程中,我们常常需要实现Parcelable接口来方便对象的序列化和反序列化,以便于在Intent、Binder等场景中传递数据。然而,手动实现Parcelable接口的代码...
在Android开发中,数据传输和保存是常见的需求,而Parcelable接口就是Android系统提供的一种高效的数据序列化方式。相比Java标准的Serializable接口,Parcelable虽然使用起来更复杂,但是其性能优势明显,尤其适合于...
在Android开发中,Parcelable接口是用于对象序列化和反序列化的高效机制,常用于Activity、Fragment之间或者Intent中传递复杂数据。Kotlin虽然提供了许多便利的功能,但在实现Parcelable时仍存在一些挑战,尤其是在...
Android Parcelable接口使用方法详解 1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel。 Classes implementing the Parcelable interface must also have ...
今天,我们将详细探讨 Android 序列化技术中 Parcelable 和 Serializable 两个接口的使用详解。 序列化和反序列化 序列化是将对象实例的状态存储到存储媒体(磁盘或者其他介质)的过程。在序列化过程中,对象的...
在Android开发中,数据传输和序列化是必不可少的环节,其中`Parcelable`和`Serializable`是两种常用的序列化方式。本文将深入解析这两种机制的区别、优缺点以及它们的使用场景。 首先,`Serializable`接口是Java...
4. **Android中如何使用Parcelable进行序列化操作** - 在需要序列化的类中实现Parcelable接口,编写`writeToParcel()`和`createFromParcel()`方法。 - 使用`Parcel`对象的`writeString()`, `writeInt()`, `write...
Parcelable是Android中用于序列化和反序列化对象的接口,使得复杂数据结构可以在进程间传递。 4. **多接口与继承** - 在AIDL中,你可以定义多个接口,并且一个接口可以继承另一个接口,这使得接口设计更加灵活。 ...
前言 在sendBroadcast,startActivity时,我们会用到Intent。 Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化...在Intent中传入一个Parcelable对象;例如传入一个bitmap对象。 代
在Android应用开发详解中,我们将深入探讨Android操作系统平台上的应用程序设计和实现。Android是一个开源的移动设备操作系统,由Google领导的开放手机联盟开发并维护。它为开发者提供了丰富的API和工具,可以创建...
`Parcelable`的优势在于它的序列化和反序列化过程是在内存中进行的,因此速度比`Serializable`快得多,适合在Android应用内部传递对象,特别是在Activity之间传递大数据量的Parcelable对象时,性能提升尤为显著。...
【Android 四大组件详解】 Android 开发中的四大组件是构建应用程序的核心元素,它们分别是 Activity、Service、BroadcastReceiver 和 ContentProvider。这些组件各自扮演着不同的角色,为应用程序提供丰富的功能和...
这边博客主要记录一下Android中Messenger的基本原理和用法。 简单来讲,Messenger其实就是Binder通信的包装器,是一种基于消息传递的进程间通信工具。 //Messenger实现了Parcelable接口,因此可以跨进程传输 public...