Parcelable序列化傳送資料與技巧
阿新 • • 發佈:2019-02-08
前言
Android開發中在activity之間傳輸資料應該是經常碰到的,如整數,字串等等。但是假如我們要傳輸一個類呢?
簡單的講就是把資料放到共享記憶體中,這樣其他多個程序就都可以從這個記憶體中訪問。
可能有人說為什麼不用Serializable進行序列化?一個字快,Parcelable比Serializable快很多按照goole工程師的說法快10倍
序列化
public class ParcelableTest implements Parcelable{ private String name; private String id; private int num; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { } }
假如我們要傳輸一個ParcelableTest類 首先我們要新增Parcelable介面並且新增介面要實現的方法
describeContents 和 writeToParcel方法
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(this.name); dest.writeString(this.id); dest.writeInt(this.num); } public ParcelableTest() { } protected ParcelableTest(Parcel in) { this.name = in.readString(); this.id = in.readString(); this.num = in.readInt(); } public static final Creator<ParcelableTest> CREATOR = new Creator<ParcelableTest>() { @Override public ParcelableTest createFromParcel(Parcel source) { return new ParcelableTest(source); } @Override public ParcelableTest[] newArray(int size) { return new ParcelableTest[size]; } };
重寫這2個方法。好了這樣類的序列化完成了。接下來在activity之間傳輸
MainActivity
ParcelableTest test=new ParcelableTest(); Bundle bundle=new Bundle(); bundle.putParcelable("testkey",test); Intent intent=new Intent(MainActivity.this,Test.class); intent.putExtras(bundle); startActivity(intent);
Test
Intent intent=getIntent();
ParcelableTest parcelableTest=(ParcelableTest) intent.getParcelableExtra("testkey");
使用外掛快速序列化
假如要傳輸的類屬性很多怎麼辦或者你要序列化很多類怎麼辦,當然有辦法,我們的前輩們早想到了這個問題。使用外掛能夠讓我們快速序列化。
開啟Android Studio
file->settings->Plugins->Browse repositroes..然後在搜尋框子、中輸入Parcelable
選擇Android Parcelable code generator進行安裝 安裝完成後重啟AS
在你要序列化的類中 快捷鍵 Alt+Insert 在彈出的Generator中選擇Paecelable 然後選擇所有屬性就可以進行快速序列化了