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);
}
}
分享到:
相关推荐
1. AIDL只能传递基本数据类型、Parcelable对象和实现了Parcelable接口的数组。 2. 当传递复杂的对象结构时,需要确保所有对象都实现了Parcelable。 3. 跨进程通信可能会有性能开销,因此应谨慎使用。 4. 服务端需要...
Android提供了两种主要的序列化方式:`Serializable`和`Parcelable`。本文将深入探讨`Parcelable`,它是Android平台中效率更高的序列化接口。 **一、Parcelable简介** `Parcelable`是Android系统提供的一个接口,...
`Parcelable`是Android系统提供的一种高效的数据序列化方式,相比Java的`Serializable`接口,它的性能更优,因为`Parcelable`在序列化和反序列化时提供了更直接的内存操作。本篇文章将详细探讨`Parcelable`在Android...
在Android studio 4.0+以后在插件中已经搜索不到Android Parcelable code generator这个超级好用的插件了,唯一能使用的方式就是下载离线插件包,进行离线安装。 File -> Settings -> Pugins -> Install plugin from...
Android开发中的Parcelable接口是用于对象序列化的一种高效方式,它比Java自带的Serializable接口性能更好,但编写起来较为繁琐。`android-parcelable-intellij-plugin`是一个IntelliJ IDEA的插件,它可以帮助开发者...
本教程将深入探讨如何使用AIDL进行进程间通信,并重点讲解如何传递Parcelable数据。 首先,让我们了解AIDL的基本概念。AIDL文件是一种特殊的文本文件,使用类似于Java的方法声明来定义服务接口。当编译项目时,...
在Android开发中,Parcelable接口是Android系统提供的一种高效的数据序列化方式,相比于Serializable接口,它在传递和存储数据时性能更高。本案例将探讨如何创建一个简单的Parcelable学生类,以便在Activity之间传递...
本文将深入探讨两种主要的序列化方式:Serializable和Parcelable,并比较它们的优缺点以及适用场景。 首先,我们来了解什么是序列化。序列化是将对象的状态转换为可存储或可传输的形式的过程。在Android中,这个...
GsonFormat、ButterKnife和Parcelable是三个非常实用的Android Studio插件,它们可以帮助开发者快速、高效地处理常见的编程任务。 1. GsonFormat GsonFormat是一个Android Studio插件,主要用于自动生成Gson序列化...
此时,可以采用更高效的Parcelable接口来实现跨进程通信(IPC,Inter-Process Communication)。本主题将深入探讨如何通过实现Parcelable接口来传递复杂数据。 首先,了解Parcelable接口的基本概念。Parcelable是...
Android提供了两种主要的序列化方式:Parcelable和Serializable。这两种方式都可以将对象转换为字节流,便于存储、传输或恢复。下面将详细讨论Android通过Parcelable和Serializable实现各种类型嵌套序列化的方法。 ...
Parcelable是Android平台提供的一种高效的数据序列化方式,比传统的Serializable接口性能更好,但使用起来也相对复杂。本文将深入探讨Android中的Parcelable接口及其序列化流程。 首先,`Parcelable`接口是Android...
在Android开发中,Parcelable接口是Android系统提供的一种高效的数据序列化方式,相比于Java中的Serializable接口,它在数据传输和保存时具有更高的性能。本示例"ParcelableDemo"将详细介绍如何在Android应用中使用...
通常,我们使用Intent对象来完成这一任务,而Intent支持多种数据类型,包括基本类型、Parcelable接口实现的类以及Serializable接口实现的类。`Parcelable`是Android提供的一种高效的数据序列化方式,相比`...
本篇文章将深入探讨如何使用AIDL(Android Interface Definition Language)、Parcelable接口以及如何实现远程服务,这些都是Android Service开发中的关键知识点。 首先,我们来谈谈AIDL。AIDL是Android系统提供的...
在Android开发中,Parcelable接口是用于对象序列化的一种高效机制,相比Java的Serializable接口,它在数据传输和存储时性能更高。"parcelable android demo"是一个实战项目,旨在帮助开发者理解并掌握Parcelable的...
通常,我们使用Intent来在不同Activity之间传递数据,但当需要传递复杂对象时,如自定义的Java对象,就需要使用到Parcelable接口。这个压缩包文件"实现Parcelable接口的方式借助Intent实现Android工程中Activity之间...
在Android开发中,Parcelable接口是用于对象序列化的一种高效机制,相比于Java的Serializable接口,它在数据传输或者存储时提供了更高的性能。理解并熟练使用Parcelable对于优化应用性能至关重要。 Parcelable接口...
AndroidStudio自动生成parcelable的插件