`
xuanzhui
  • 浏览: 200838 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

实现Parcelable

阅读更多

Activity之间通过intent传递object时,该object的class需要实现Parcelable。

 

Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must also have a non-null static field called CREATOR of a type that implements the Parcelable.Creator interface.

A typical implementation of Parcelable is:

public class MyParcelable implements Parcelable {
    private int mData;

    public int describeContents() {
        //一般返回0即可
        return 0;
    }

    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(mData);
    }

    public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
        public MyParcelable createFromParcel(Parcel in) {
            return new MyParcelable(in);
        }

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

    private MyParcelable(Parcel in) {
        mData = in.readInt();
    }
}

 http://developer.android.com/reference/android/os/Parcelable.html

 

最核心的地方是

private MyParcelable(Parcel in)

writeToParcel(Parcel out, int flags)

读写顺序要一致。

 

public class Bill implements Parcelable {
    Integer fee;
    String title;
    Boolean result;

    public int describeContents() {
        return 0;
    }

    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(fee);
        out.writeString(title);
        out.writeByte((byte) (result!=null && result ? 1 : 0));
    }

    public static final Parcelable.Creator<Bill> CREATOR = new Parcelable.Creator<Bill>() {
        public Bill createFromParcel(Parcel in) {
            return new Bill(in);
        }

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

    private Bill(Parcel in) {
        fee = in.readInt();
        title = in.readString();
        result = (in.readByte()==1);
    }
}

 

 

 

 

分享到:
评论

相关推荐

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

    这个压缩包文件"实现Parcelable接口的方式借助Intent实现Android工程中Activity之间Java对象的传递.zip"提供了一个关于如何实现这一功能的示例。 首先,了解Intent的基本用法。Intent在Android中扮演着消息传递的...

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

    本主题将深入探讨如何通过实现Parcelable接口来传递复杂数据。 首先,了解Parcelable接口的基本概念。Parcelable是Android特有的接口,用于对象的序列化,其效率远高于Serializable。它要求开发者手动编写序列化和...

    利用Kotlin如何实现Android开发中的Parcelable详解

    Kotlin虽然提供了许多便利的功能,但在实现Parcelable时仍存在一些挑战,尤其是在处理非原生Parcel支持的数据类型时。本篇文章将详细讲解如何在Kotlin中实现Parcelable以及如何解决在使用Parcelable时遇到的`...

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

    如果要在AIDL中传递自定义对象,这些对象必须实现Parcelable接口。实现Parcelable接口通常包括以下步骤: 1. 创建一个内部静态类`Creator&lt;T&gt;`,它实现了`Parcelable.Creator&lt;T&gt;`接口。 2. 实现`writeToParcel()`...

    使用ParcelableDemo

    在"йϰParcelable"这个压缩包中,可能包含了实现Parcelable接口的示例代码、相关的测试用例以及如何在实际项目中使用Parcelable接口的文档。通过深入研究这些内容,开发者可以更好地理解和掌握在Android应用中有效...

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

    `android-parcelable-intellij-plugin`是一个IntelliJ IDEA的插件,它可以帮助开发者自动实现Parcelable接口,提高开发效率。 在Android应用开发中,我们常常需要将对象的状态保存或者传递到其他地方,比如从一个...

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

    1. 实现Parcelable接口:在需要序列化的类中实现Parcelable接口,并重写`writeToParcel()`和`describeContents()`方法。`writeToParcel()`用于将对象字段写入Parcel,`describeContents()`通常返回0,表示不包含特殊...

    Parcelable in Android

    与Serializable相比,虽然实现Parcelable较为复杂,但其优势在于速度和内存使用效率。 实现Parcelable接口通常涉及以下步骤: 1. 在类声明中实现Parcelable接口。 2. 添加一个内部常量,定义类的`PARCELABLE_WRITE...

    android序列化(Parcelable)

    **三、实现Parcelable接口** 要使一个类支持`Parcelable`,需完成以下步骤: 1. 实现`Parcelable`接口,并在类中定义`CREATOR`常量,这是一个工厂类,用于创建对象实例。 2. 重写`writeToParcel()`方法,将对象的...

    Parcelable

    一个类要实现Parcelable接口,需要重写两个方法:`writeToParcel()` 和 `describeContents()`。`writeToParcel()`方法用于将对象的数据写入Parcel中,而`describeContents()`通常返回0,表示对象不包含任何需要特殊...

    parcelable学生类使用简单案例

    总结来说,通过实现Parcelable接口,我们可以创建高效的可序列化的对象,这在Android应用中传递大量数据或保存状态时非常有用。这个简单的`Student`类示例展示了如何实现和使用Parcelable,帮助开发者理解这一关键...

    Android 之 Parcelable 序列化

    实现Parcelable接口需要重写两个方法:`writeToParcel()` 和 `describeContents()`。`writeToParcel()`方法用于将对象的状态写入Parcel,`describeContents()`则返回对象内容可能包含的特殊类型的标志,通常返回0...

    parcelable android demo

    实现Parcelable接口需要遵循以下步骤: 1. 在类中添加Parcelable接口: ```java public class MyParcelable implements Parcelable { // 类的属性 } ``` 2. 实现`describeContents()`方法,通常返回0,表示...

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

    要实现Parcelable,需要覆写两个方法:`writeToParcel()`用于序列化对象,`describeContents()`通常返回0,表示没有特殊内容需要序列化。此外,还需要创建一个静态内部类`Creator`,它包含`createFromParcel()`和`...

    Android Parcelable接口使用方法详解

    Parcelable接口的实现需要实现Parcelable接口中的三个方法:describeContents、writeToParcel和CREATOR。 describeContents方法是内容描述接口,基本不用管。writeToParcel方法是写入接口函数,用于将对象序列化为...

    Inetent传递对象parcelable

    要使一个对象支持Parcelable,我们需要让该类实现Parcelable接口,并实现其中的方法。 1. **实现Parcelable接口** 首先,在你的自定义对象类中添加implements Parcelable,然后实现两个关键方法:`writeToParcel()...

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

    实现Parcelable的基本步骤包括创建`CREATOR`常量,实现`writeToParcel()`和`describeContents()`方法。例如,一个简单的Parcelable类: ```java public class MyParcelable implements Parcelable { private int ...

    Parcelable完全解析demo

    当一个Android对象需要在进程间传递或者保存到存储中时,就需要实现Parcelable接口。实现这个接口需要编写两个方法:`writeToParcel()`用于写入数据,`describeContents()`返回写入的数据类型。通常,我们还需要创建...

    android-parcelable-intellij-plugin Version 0.7.0

    在Android开发过程中,我们常常需要实现Parcelable接口来方便对象的序列化和反序列化,以便于在Intent、Binder等场景中传递数据。然而,手动实现Parcelable接口的代码繁琐且容易出错。为此,开发者们创建了一个名为...

    android通信之aidl Parcelable

    1. **定义Parcelable对象**:首先,你需要定义一个实现Parcelable接口的类,包含`writeToParcel()`和`describeContents()`两个方法,用于序列化和反序列化对象。 2. **在AIDL文件中声明接口**:接着,在AIDL文件中...

Global site tag (gtag.js) - Google Analytics