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
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
public class Test extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent i = getIntent();
Person p = i.getParcelableExtra("yes");
System.out.println("---->"+p.name);
System.out.println("---->"+p.map.size());
}
}
发送的Activity
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class TestNew extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent();
Person p = new Person();
p.map = new HashMap<String,String>();
p.map.put("yes", "ido");
p.name="ok";
intent.putExtra("yes", p);
intent.setClass(this, Test.class);
startActivity(intent);
}
}
Parcelable的实现类
import java.util.HashMap;
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable {
public HashMap<String,String> map = new HashMap<String,String> ();
public String name ;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeMap(map);
dest.writeString(name);
}
public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
//重写Creator
@Override
public Person createFromParcel(Parcel source) {
Person p = new Person();
p.map=source.readHashMap(HashMap.class.getClassLoader());
p.name=source.readString();
return p;
}
@Override
public Person[] newArray(int size) {
// TODO Auto-generated method stub
return null;
}
};
}
分享到:
相关推荐
android-parcelable-intellij-plugin, 面向 Android Parcelable样板代码生成的IntelliJ插件 intellij/Android Studio 插件,用于 Android Parcelable代码生成这里工具基于类中的字段生成一个 Android Parcelable插件...
Android开发中的Parcelable接口是用于对象序列化的一种高效方式,它比Java自带的Serializable接口性能更好,但编写起来较为繁琐。`android-parcelable-intellij-plugin`是一个IntelliJ IDEA的插件,它可以帮助开发者...
在Android studio 4.0+以后在插件中已经搜索不到Android Parcelable code generator这个超级好用的插件了,唯一能使用的方式就是下载离线插件包,进行离线安装。 File -> Settings -> Pugins -> Install plugin from...
在Android中,Parcelable是数据序列化的高级接口,它比Serializable效率更高。如果要在AIDL中传递自定义对象,这些对象必须实现Parcelable接口。实现Parcelable接口通常包括以下步骤: 1. 创建一个内部静态类`...
本文将深入探讨Android中的Parcelable接口及其序列化流程。 首先,`Parcelable`接口是Android专门为Android系统内部使用和跨进程传递数据而设计的。相比`Serializable`,它的优点在于序列化和反序列化的速度更快,...
android parcelable code generator
Parcelable是Android系统提供的高效序列化方式,适用于内存内的数据交换,如Intent中的额外数据或者Fragment之间的通信。相比于Serializable,Parcelable的序列化和反序列化速度更快,但编写代码相对复杂。 1. 实现...
在Android开发过程中,我们常常需要实现Parcelable接口来方便对象的序列化和反序列化,以便于在Intent、Binder等场景中传递数据。然而,手动实现Parcelable接口的代码繁琐且容易出错。为此,开发者们创建了一个名为...
该工具根据类中的字段生成一个Android Parcelable实现。该工具是同名原始插件的新版本 用法:在编辑器中按ALT +插入(或用于代码生成的等效键绑定),然后选择Parcelable。它允许您选择要打包的字段。
在Android开发中,Parcelable接口是用于对象序列化和反序列化的机制,相比于Java自带的Serializable接口,它在性能上有着显著的优势。当需要通过Intent在不同的Activity之间传递复杂对象,或者进行进程间通信(IPC)...
在Android中,Parcelable是比Serializable更高效的数据序列化方式,尤其适用于跨进程传递复杂对象。Parcelable接口提供了写入和读取数据到Parcel对象的方法,这使得对象可以在内存中被复制和传递。相比于...
AndroidStudio自动生成parcelable的插件
在Android开发中,数据传输和保存是常见的需求,而Parcelable接口就是Android系统提供的一种高效的数据序列化方式。相比Java标准的Serializable接口,Parcelable虽然使用起来更复杂,但是其性能优势明显,尤其适合于...
综上所述,要理解并实现Android中Parcelable序列化自定义类集合在Activity间传递,开发者需要掌握Parcelable接口的使用、自定义类的Parcelable实现、集合处理、Intent数据传递,以及可能借助的源码阅读和辅助工具。...
在Android开发中,跨进程通信(IPC)是一个重要的概念,特别是在设计大型、复杂的应用时。本教程将聚焦于使用`Messenger`和`Parcelable`接口来实现Android应用间的进程间通信。`Messenger`是Android系统提供的一种轻...
在Android开发中,Parcelable接口是用于对象序列化的一种高效机制,相比Java的Serializable接口,它在数据传输和存储时性能更高。"parcelable android demo"是一个实战项目,旨在帮助开发者理解并掌握Parcelable的...
在Android开发中,数据传输和序列化是至关重要的任务,`Parcelable`接口是Android系统提供的一种高效的数据序列化方式,比传统的`Serializable`接口性能更优。`Android parcelable_code_general`是一个针对`...
在Android studio 4.0+以后在插件中已经搜索不到Android Parcelable code generator这个超级好用的插件了,唯一能使用的方式就是下载离线插件包,进行离线安装。
本篇文章将详细探讨`Parcelable`在Android中的使用方法,实例解析其序列化过程,并通过`parcelableDemo`项目进行实战演练。 首先,了解`Parcelable`的基本概念。`Parcelable`是Android中用于对象序列化的接口,它...