`
Jack22
  • 浏览: 133068 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Parcelable

阅读更多
android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。

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

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

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

2)describeContents方法

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

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

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

简单的使用方法:

public class Student  implements Parcelable{
public int _id;
public string name;
public int sex;
public int age;
Student (Parcel p){
      _id = p.readInt();
      name = p.readString();
      sex = p.readInt();
      age = p.readInt();
}

Student(){};


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

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

     public int describeContents() {
         return 0;
     }

     public void writeToParcel(Parcel p, int flags) {
         p.writeInt(_id);
         p.writeString(label);
         p.writeInt(sex);
         p.writeInt(age);
      
     }
}


发送Parcel的activity

public SendParcel extends Activity{
      public void onCreate(Bundle bundle){
         super.onCreate(bundle);
         setContentView(R.layout.main);
         Student s = new Student();
         s._id = 1;
         s.name = "ygc";
         s.sex = 1;
         s.age= 23;
         Intent i = new Intent();
         i.putExtra("key", s);
         i.setClass(this, Receive.class);
         startActivity(i);
      }
}

接收Parcel的activity

public class Receive extends Activity {  
     public void onCreate(Bundle savedInstanceState){
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main2);
         Intent i = getIntent();
         Student s = i.getParcelableExtra("key");
         System.out.println(s.name);
     }

}
分享到:
评论

相关推荐

    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 -&gt; Settings -&gt; Pugins -&gt; 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