2013年12月30日 星期一

Android 開發 (八) Parcelable 使用

序列化

在android中,將資料在頁面間傳遞的其中一個方法就是將資料序列化以後保存在bundle內
Serializable是java的序列化,要實作非常簡單,只需要將以下的code 輸入即可

class PersonSerializable implements Serializable
{

 private static final long serialVersionUID = 1L;
 String name;
        //...other properties
}


Parcelable 是android內部輕量級,高度最佳化的序列化協定,
簡單的說,在程序間的溝通建議使用 Parcelable。


如何使用Parcelable?

1.使用parcelable需要實作 Parcelable (廢話....)
2.必須實作 writeToParcel
3.必須實作 CEATOR(public static final 變數)
sample 如下


class Person implements Parcelable {

 String name;
 

    protected Person(Parcel in) {
        name = in.readString();
    }

    public Person() {
  // TODO Auto-generated constructor stub
 }

 @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
    }

    public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
        @Override
        public Person createFromParcel(Parcel in) {
            return new Person(in);
        }

        @Override
        public Person[] newArray(int size) {
            return new Person[size];
        }
    };
}

說實話... Parcelable實在不是很好實作,尤其是class 裡面有其他class或者 property一堆的時候
不過為了最佳化我還是花了點時間survey,
最後,我找到了下面這個網址  http://devk.it/proj/parcelabler/
使用方法很簡單,將以下的程式丟入Code section內  並按下 Build

class Person implements Parcelable {
 String name;
}

他就自動幫你產生好所有必要的程式碼了!!~
最後,讓我們大喊一聲自動化萬歲~

沒有留言:

張貼留言