1. 程式人生 > >Android中的兩種序列化方式

Android中的兩種序列化方式

1.Serializable,官方文件給出這種說明
類通過實現 java.io.Serializable 介面以啟用其序列化功能。未實現此介面的類將無法使其任何狀態序列化或反序列化。可序列化類的所有子型別本身都是可序列化的。序列化介面沒有方法或欄位,僅用於標識可序列化的語義。

實現這種序列化比較簡單,直接實現Serializable介面就行,看程式碼

/**
 * 
 */
package com.fangzhiyeu.dev;

import java.io.Serializable;

import javax.lang.model.element.Parameterizable;

/**
 * @author
fang * */
public class Demo1 implements Serializable{ String name; int size; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSize() { return size; } public void setSize(int size) { this.size = size; } }

讓JavaBean直接實現Serializable的介面就行

2.Parcelable序列化,實現Parcelable序列化較為麻煩
2.1首先需要實現:writeToParcel和readFromPacel方法

2.2接著需要在:該類中新增一個名為CREATOR的static final屬性
改屬性需要實現:android.os.Parcelable.Creator介面

2.3再接著需要從寫介面中的兩個方法:
createFromParcel(Parcel source)方法:實現從source創建出JavaBean例項的功能
,這種序列化使用AS非常簡單,

package com.example.myapplication;

import
android.os.Parcel; import android.os.Parcelable; /** * Created by fang on 2017/11/12. */ public class Demo implements Parcelable { String name; int Size; protected Demo(Parcel in) { name= in.readString(); Size=in.readInt(); } public static final Creator<Demo> CREATOR = new Creator<Demo>() { @Override public Demo createFromParcel(Parcel in) { return new Demo(in); } @Override public Demo[] newArray(int size) { return new Demo[size]; } }; @Override public int describeContents() { return 0;//預設返回O } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(Size); dest.writeString(name); } }