`

Parcelable

 
阅读更多

android开发没什么神秘的地方,只不过是又一个新的操作系统而已(而且还是基于Linu的)。下面记录下最近的开发心得。

android整个上层java开发框架可以分为四个方面:界面(activity和appwidget)、消息(Intent和Message)、服务(Service)和数据(Sqllite、Content Provider)。

开发要点摘记:

1、新的序列化方式:

android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。

除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。

Parcelable实现要点:需要实现三个东西

1)writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中.声明如下:

writeToParcel (Parcel dest, int flags) 具体参数含义见javadoc

2)describeContents方法。没搞懂有什么用,反正直接返回0也可以

3)静态的Parcelable.Creator接口,本接口有两个方法:

createFromParcel(Parcel in) 实现从in中创建出类的实例的功能

newArray(int size) 创建一个类型为T,长度为size的数组,仅一句话(return new T[size])即可。估计本方法是供外部类反序列化本类数组使用。

示例:

需求:我们经常需要在多个部件(activity或service)之间通过Intent传递一些数据,简单类型(如数字、字符串)的可以直接放入Intent。复杂类型(例如,J2ee中的Bean)的必须实现Parcelable接口。示例如下:

class SampleBean implements Parcelable

{

private Bundle mBundle=new Bundle();
public String getArriveTime()
{
return mBundle.getString("arriveTime");
}

public String getOlTime()
{
return mBundle.getString("olTime");
}

public void setArriveTime(String arriveTime)
{
this.mBundle.putString("arriveTime", arriveTime);
}

public void setOlTime(String olTime)
{
this.mBundle.putString("olTime", olTime);
}

public int describeContents()
{
// TODO Auto-generated method stub
return 0;
}

public void writeToParcel(Parcel out, int arg1)
{
// TODO Auto-generated method stub
out.writeBundle(this.mBundle);
}

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public TrainInfo createFromParcel(Parcel in)
{
SampleBean ti=new SampleBean();
ti.mBundle=in.readBundle();
return ti;
}

public SampleBean[] newArray(int size)
{
return new SampleBean[size];
}
};

}

这里采用Bundle是因为在Parcel中并没有key的概念存在,而Bundle相当于Map。

分享到:
评论

相关推荐

    Android多进程通讯AIDL传递Parcelable对象

    1. AIDL只能传递基本数据类型、Parcelable对象和实现了Parcelable接口的数组。 2. 当传递复杂的对象结构时,需要确保所有对象都实现了Parcelable。 3. 跨进程通信可能会有性能开销,因此应谨慎使用。 4. 服务端需要...

    android序列化(Parcelable)

    Android提供了两种主要的序列化方式:`Serializable`和`Parcelable`。本文将深入探讨`Parcelable`,它是Android平台中效率更高的序列化接口。 **一、Parcelable简介** `Parcelable`是Android系统提供的一个接口,...

    安卓自带Parcelable序列化

    `Parcelable`是Android系统提供的一种高效的数据序列化方式,相比Java的`Serializable`接口,它的性能更优,因为`Parcelable`在序列化和反序列化时提供了更直接的内存操作。本篇文章将详细探讨`Parcelable`在Android...

    Android Parcelable code generator

    在Android studio 4.0+以后在插件中已经搜索不到Android Parcelable code generator这个超级好用的插件了,唯一能使用的方式就是下载离线插件包,进行离线安装。 File -> Settings -> Pugins -> Install plugin from...

    android-parcelable-intellij-plugin自动Parcelable方式序列化.rar

    Android开发中的Parcelable接口是用于对象序列化的一种高效方式,它比Java自带的Serializable接口性能更好,但编写起来较为繁琐。`android-parcelable-intellij-plugin`是一个IntelliJ IDEA的插件,它可以帮助开发者...

    andridAidl通信,及传递Parcelable数据

    本教程将深入探讨如何使用AIDL进行进程间通信,并重点讲解如何传递Parcelable数据。 首先,让我们了解AIDL的基本概念。AIDL文件是一种特殊的文本文件,使用类似于Java的方法声明来定义服务接口。当编译项目时,...

    parcelable学生类使用简单案例

    在Android开发中,Parcelable接口是Android系统提供的一种高效的数据序列化方式,相比于Serializable接口,它在传递和存储数据时性能更高。本案例将探讨如何创建一个简单的Parcelable学生类,以便在Activity之间传递...

    Android序列化——Serializable与Parcelable

    本文将深入探讨两种主要的序列化方式:Serializable和Parcelable,并比较它们的优缺点以及适用场景。 首先,我们来了解什么是序列化。序列化是将对象的状态转换为可存储或可传输的形式的过程。在Android中,这个...

    GsonFormat、ButterKnife 、Parcelable

    GsonFormat、ButterKnife和Parcelable是三个非常实用的Android Studio插件,它们可以帮助开发者快速、高效地处理常见的编程任务。 1. GsonFormat GsonFormat是一个Android Studio插件,主要用于自动生成Gson序列化...

    通过实现Parcelable接口跨进程传递复杂数据

    此时,可以采用更高效的Parcelable接口来实现跨进程通信(IPC,Inter-Process Communication)。本主题将深入探讨如何通过实现Parcelable接口来传递复杂数据。 首先,了解Parcelable接口的基本概念。Parcelable是...

    Android通过Parcelable和Serializable实现各种类型嵌套序列化

    Android提供了两种主要的序列化方式:Parcelable和Serializable。这两种方式都可以将对象转换为字节流,便于存储、传输或恢复。下面将详细讨论Android通过Parcelable和Serializable实现各种类型嵌套序列化的方法。 ...

    Android 之 Parcelable 序列化

    Parcelable是Android平台提供的一种高效的数据序列化方式,比传统的Serializable接口性能更好,但使用起来也相对复杂。本文将深入探讨Android中的Parcelable接口及其序列化流程。 首先,`Parcelable`接口是Android...

    使用ParcelableDemo

    在Android开发中,Parcelable接口是Android系统提供的一种高效的数据序列化方式,相比于Java中的Serializable接口,它在数据传输和保存时具有更高的性能。本示例"ParcelableDemo"将详细介绍如何在Android应用中使用...

    Android Parcelable序列化自定义类集合在Activity间传递

    通常,我们使用Intent对象来完成这一任务,而Intent支持多种数据类型,包括基本类型、Parcelable接口实现的类以及Serializable接口实现的类。`Parcelable`是Android提供的一种高效的数据序列化方式,相比`...

    android-parcelable-intellij-plugin.jar

    android parcelable code generator

    Android Service学习之AIDL, Parcelable和远程服务

    本篇文章将深入探讨如何使用AIDL(Android Interface Definition Language)、Parcelable接口以及如何实现远程服务,这些都是Android Service开发中的关键知识点。 首先,我们来谈谈AIDL。AIDL是Android系统提供的...

    parcelable android demo

    在Android开发中,Parcelable接口是用于对象序列化的一种高效机制,相比Java的Serializable接口,它在数据传输和存储时性能更高。"parcelable android demo"是一个实战项目,旨在帮助开发者理解并掌握Parcelable的...

    实现Parcelable接口的方式借助Intent实现Android工程中Activity之间Java对象的传递.zip

    通常,我们使用Intent来在不同Activity之间传递数据,但当需要传递复杂对象时,如自定义的Java对象,就需要使用到Parcelable接口。这个压缩包文件"实现Parcelable接口的方式借助Intent实现Android工程中Activity之间...

    Parcelable in Android

    在Android开发中,Parcelable接口是用于对象序列化的一种高效机制,相比于Java的Serializable接口,它在数据传输或者存储时提供了更高的性能。理解并熟练使用Parcelable对于优化应用性能至关重要。 Parcelable接口...

Global site tag (gtag.js) - Google Analytics