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序列化(Parcelable)
Android多进程通讯AIDL传递Parcelable对象
android parcelable code generator
Parcelable序列化实例
在Android studio 4.0+以后在插件中已经搜索不到Android Parcelable code generator这个超级好用的插件了,唯一能使用的方式就是下载离线插件包,进行离线安装。 File -> Settings -> Pugins -> Install plugin from...
AndroidStudio自动生成parcelable的插件
通过客户端和服务端,演示如何通过aidl实现进程间通信,及如何传递Parcelable数据
Android序列化——Serializable与Parcelable
parcelable学生类使用简单案例
android-parcelable-intellij-plugin自动Parcelable方式序列化.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
在Android中用Parcelable序列化虽然效率高,但是比Serializable麻烦很多;现在只要添加一个Jar包就可以省去序列化的过程,很方便。 Jar包在项目里,可以直接使用,也可以查看里面的文本文件"README.md
Android AIDL传输对象代码 Parcelable 在AIDL client的Activity中点击传输对象按钮查看日志,就会看到对象里面的内容
android-parcelable-intellij-plugin, 面向 Android Parcelable样板代码生成的IntelliJ插件 intellij/Android Studio 插件,用于 Android Parcelable代码生成这里工具基于类中的字段生成一个 Android Parcelable插件...
android Activity之间数据传递 Parcelable和Serializable接口的使用的具体实例代码,详情请看>http://blog.csdn.net/js931178805/article/details/8268144
GsonFormat、ButterKnife 、Parcelable 三大Android Studio插件,提高您的代码效率
实现Parcelable接口跨进程传递复杂数据
该工具根据类中的字段生成一个Android Parcelable实现。该工具是同名原始插件的新版本 用法:在编辑器中按ALT +插入(或用于代码生成的等效键绑定),然后选择Parcelable。它允许您选择要打包的字段。
Android通过Parcelable和Serializable实现各种类型嵌套序列化