Android——序列化
来源:互联网 发布:mac装双系统win10 编辑:程序博客网 时间:2024/05/17 04:15
1.Serializable方式
Serializable是序列化的意思,表示一个对象可以转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。序列化的方式很简单,只需要让一个类去实现Serializable接口。
public class Person implements Serializable{private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}因为此类已经实现了Serializable接口,这样所有的Person对象都是可序列化的了。
Person person = new Person();person.setName("Tom");person.setAge(20);Intent intent = new Intent(FirstActivity.this,SecondActivity.class);intent.putExtra("person_data",person);startActivity(intent);在SecondActivity中获取这个对象也很简单,写法如下:
Person person = (Person)getIntent().getSerializableExtra("person_data");成功的使用Intent来传递对象的功能。
2.Parcelable
除了Serializable之外,使用Parcelable也可以实现相同的效果,不过不同于将对象进行序列化,Parcelable方式的实现原理是将一个完整的对象进行分解,而分解后的每一部分都是Intent所支持的数据类型,这样也可以实现传递对象的功能了。
public class Person implements Parcelable { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); //写出name dest.writeInt(age); //写出age } public static final Parcelable.Creator<Person> CREATOR = new Parcelable.ClassLoaderCreator<Person>(){ @Override public Person createFromParcel(Parcel source) { Person person = new Person(); person.name = source.readString(); person.age = source.readInt(); return person; } @Override public Person[] newArray(int size) { return new Person[size]; } @Override public Person createFromParcel(Parcel source, ClassLoader loader) { return null; } };}首先,让Person类实现Parcelable接口,这样就必须重写describeContents()和wirteToParcel()这两个方法。
其中describeContents()方法直接返回0就可以了,而wirteToParcel()方法中需要调用Parcel的writeXxx()方法把Person类中的字段一一写出。
在createFromParcel()方法中我们需要读取刚才写出的name和age字段,并创建一个Person对象进行返回。(分解成Intent所支持的数据类型)
Person person = (Person)getIntent().getParcelableExtra("person_data");总结:
Serializable的方式较为简单,由于会把整个对象进行序列化,因此效率方面会比Parcelable方式低一些,通常建议用Parcelable的方式来实现Intent传递对象的功能。
0 0
- Android——序列化
- Android—对象序列化
- Android—序列化对象—Parcelable
- Android中的序列化机制——Parcel与Parcelable
- Android序列化——Serializable与Parcelable
- Android安全攻击——对象序列化OOM问题
- Android基础——序列化之Parcelable与Serializable
- Android学习笔记之—XML文件的序列化
- Android笔记—Intent传递序列化HashMap对象
- Android bitmap序列化
- Android中序列化
- Android 序列化 Parcelable
- Android中的序列化
- android的序列化
- android对象序列化
- android中的序列化
- Android 序列化
- android 传值 序列化
- Jmeter模拟发送TCP/UDP/HTTP/FTP等请求包
- fzu 2020 Lucas 定理
- String,StringBuffer,StringBuilder 三者的区别
- Gym 100947C——Rotate It !!(水题水题)
- UIScrollView的滑动原理解析
- Android——序列化
- Java 异常详解
- 百练 b:开餐馆
- 线程安全问题之线程同步机制(同步代码块)
- Java中的集合类
- java thread join 源码解析
- Codeforces Round #201 (Div. 2) E - Number Transformation II
- 史上最全Fragment介绍,包括fragment的定义,生命周期,用法
- 英文歌曲:What I Have Done(变形金刚第一部主题曲)