序列化
一、serializable和parcelable区别
serializable是java里面的序列化,parcelable是android里面的序列化。
serializable序列化之后的文件是放在本地磁盘的,便于持久存储;
parcelable序列化之后的文件是放在内存的,速度很快;
serializable的序列化和反序列化已经写好了,我们只需要傻瓜式调用即可,parcelable的序列化和反序列化要我们自己写。
二、代码实例
Serializable序列化方式
activityDataSend.testClass1_serialize
1 package activityDataSend;
2
3 import java.io.Serializable;
4
5 public class testClass1_serialize implements Serializable{
6 private String name;
7 private int age;
8 public String getName() {
9 return name;
10 }
11 public void setName(String name) {
12 this.name = name;
13 }
14 public int getAge() {
15 return age;
16 }
17 public void setAge(int age) {
18 this.age = age;
19 }
20 public testClass1_serialize(String name, int age) {
21 super();
22 this.name = name;
23 this.age = age;
24 }
25 public testClass1_serialize() {
26 super();
27 }
28 @Override
29 public String toString() {
30 return "testClass1_serialize [name=" + name + ", age=" + age + "]";
31 }
32
33 }
Parcelable序列化方式
activityDataSend.testClass2_parcelable
序列化差不多要自己写
反序列化也要自己写
1 package activityDataSend;
2
3 import android.os.Parcel;
4 import android.os.Parcelable;
5
6 /*
7 * Parcelable序列化方式 8 * 序列化差不多要自己写 9 * 反序列化也要自己写 10 */
11 public class testClass2_parcelable implements Parcelable{
12 private String name;
13 private int age;
14 public String getName() {
15 return name;
16 }
17 public void setName(String name) {
18 this.name = name;
19 }
20 public int getAge() {
21 return age;
22 }
23 public void setAge(int age) {
24 this.age = age;
25 }
26 public testClass2_parcelable() {
27 super();
28 }
29 public testClass2_parcelable(String name, int age) {
30 super();
31 this.name = name;
32 this.age = age;
33 }
34
35 @Override
36 public String toString() {
37 return "testClass2_parcelable [name=" + name + ", age=" + age + "]";
38 }
39 @Override
40 public int describeContents() {
41 // TODO Auto-generated method stub
42 return 0;
43 }
44 /*
45 * 序列化
46 * (non-Javadoc)
47 * @see android.os.Parcelable#writeToParcel(android.os.Parcel, int)
48 */
49 @Override
50 public void writeToParcel(Parcel dest, int flags) {//序列化 51 // TODO Auto-generated method stub
52 dest.writeString(name);
53 dest.writeInt(age);
54 }
55 /*
56 * 反序列化要自己写,下面这个全局静态变量需要我们自己写
57 */
58 public static Parcelable.Creator<testClass2_parcelable> CREATOR=new Creator<testClass2_parcelable>() { 59
60 @Override
61 public testClass2_parcelable[] newArray(int size) {
62 // TODO Auto-generated method stub
63 return null;
64 }
65 /*
66 * 反序列化
67 * (non-Javadoc)
68 * @see android.os.Parcelable.Creator#createFromParcel(android.os.Parcel)
69 */
70 @Override
71 public testClass2_parcelable createFromParcel(Parcel source) {//反序列化 72 // TODO Auto-generated method stub
73 testClass2_parcelable class2=new testClass2_parcelable();
74 class2.setName(source.readString());
75 class2.setAge(source.readInt());
76 return class2;
77 }
78 };
79 }
三、序列化使用实例
在MainActivity页面创建序列化对象,然后用intent.putExtra方法将序列化对象传递给Activity01页面
activityDataSend.MainActivity
1 package activityDataSend;
2
3
4
5
6
7 import com.example.activityDataSend.R;
8
9 import android.app.Activity;
10 import android.content.Intent;
11 import android.content.Loader;
12 import android.os.Bundle;
13 import android.v