`

Parcelable 新的序列化方法

 
阅读更多

原来一直以为intent中无法实现除基本数据的传递,其实intent中也可以传递继承Parcelable接口的类

 

 

Parcelable 是android 的一个新的序列化方式

  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]; 
        } 
    };

}

分享到:
评论

相关推荐

    Android Parcelable自动序列化

    在Android中用Parcelable序列化虽然效率高,但是比Serializable麻烦很多;现在只要添加一个Jar包就可以省去序列化的过程,很方便。 Jar包在项目里,可以直接使用,也可以查看里面的文本文件"README.md

    Android 之 Parcelable 序列化

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

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

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

    Android序列化——Serializable与Parcelable

    使用`writeObject()`和`readObject()`方法可以自定义序列化的行为。 优点: - 实现简单,只需要在类上添加`implements Serializable`即可。 - 序列化后的数据可以跨平台传输。 缺点: - 性能较低,因为...

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

    标题"Android Parcelable序列化自定义类集合在Activity间传递"所涉及的知识点主要集中在以下几个方面: 1. **Parcelable接口**: `Parcelable`是Android提供的一个接口,用于对象的序列化和反序列化。通过实现这个...

    安卓自带Parcelable序列化

    本篇文章将详细探讨`Parcelable`在Android中的使用方法,实例解析其序列化过程,并通过`parcelableDemo`项目进行实战演练。 首先,了解`Parcelable`的基本概念。`Parcelable`是Android中用于对象序列化的接口,它...

    android序列化(Parcelable)

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

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

    下面将详细讨论Android通过Parcelable和Serializable实现各种类型嵌套序列化的方法。 **Parcelable接口** Parcelable是Android系统提供的高效序列化方式,适用于内存内的数据交换,如Intent中的额外数据或者...

    Android中Serializable和Parcelable序列化对象详解

    - 在需要序列化的类中实现Parcelable接口,编写`writeToParcel()`和`createFromParcel()`方法。 - 使用`Parcel`对象的`writeString()`, `writeInt()`, `writeLong()`等方法写入数据,根据对象属性类型选择合适的...

    很详细的android序列化过程Parcelable

    总之,Android的Parcelable机制通过实现序列化和反序列化方法,使得对象能够在内存、文件、网络等场景下进行有效的数据交换。这种机制虽然比Serializable复杂,但其性能优势在大量数据操作时尤为明显,尤其是在跨...

    Kotlin语法学习-变量定义、函数扩展、Parcelable序列化等简单总结

    Kotlin语法学习-变量定义、函数扩展、Parcelable序列化等简单总结 Kotlin是Google推荐的Android开发语言之一,作为Android开发者,熟悉Kotlin语法是非常必要的。本文主要介绍了Kotlin语法学习-变量定义、函数扩展、...

    诠释Android中序列化的原理与机制

    本文将深入探讨Android中两种主要的序列化方式:Serializable和Parcelable,并解析它们的工作原理及优缺点。 首先,我们来了解Serializable接口。Serializable是Java提供的一个标准序列化接口,任何实现了此接口的...

    ParcelableDemo.rar

    `Parcelable`接口提供了这样的能力,通过实现它的方法,我们可以自定义序列化和反序列化的逻辑,从而提高效率。 实现`Parcelable`接口通常涉及以下几个步骤: 1. 在你的类中实现`Parcelable`接口,并添加`CREATOR`...

    android序列化实现

    **Parcelable序列化** Parcelable是Android平台提供的一种高效的序列化方式,它是专门为Android系统设计的,相比Serializable效率更高。Parcelable接口位于`android.os`包下,是Android特有的序列化方式。实现...

    Android对象序列化的代码例子

    Android提供了两种主要的对象序列化方式:Parcelable和Serializable。下面我们将详细探讨这两种方法以及它们的使用场景和注意事项。 首先,我们来看Parcelable接口。Parcelable是Android系统提供的一个高效的对象...

    android 对象序列化

    这种方法简单易用,但序列化后的数据量较大,且序列化和反序列化速度较慢。 ```java public class MyObject implements Serializable { private static final long serialVersionUID = 1L; // 类的成员变量 } My...

    Android中的Parcelable序列化对象

    `Parcelable`接口是Android系统提供的一种高效的对象序列化机制,相比于Java中的`Serializable`接口,它在性能上更优,但使用起来较为复杂。下面将详细解释`Parcelable`接口的工作原理、实现步骤以及其在Android开发...

    Parcelable与Serializable

    在Android开发中,数据传输和保存是常见的需求,而`Parcelable`和`Serializable`就是两种主要的序列化机制。它们都是将对象转换为字节流,以便存储或在网络中传递,但`Parcelable`通常被认为比`Serializable`更高效...

    Android序列化传递数据

    序列化是将对象转换为可存储或传输格式的过程,而在Android中,有两种主要的序列化方式:Parcelable和Serializable。下面将详细介绍这两种序列化机制及其在数据传递中的应用。 **Parcelable** 是Android特有的序列...

Global site tag (gtag.js) - Google Analytics