设为首页 加入收藏

TOP

序列化(一)
2017-10-11 17:01:59 】 浏览:5056
Tags:序列化

序列化

一、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
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ANR异常 下一篇Eclipse中快速定位

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目