編輯:關於Android編程
一 序列化原因:
1.永久性保存對象,保存對象的字節序列到本地文件中;
2.通過序列化對象在網絡中傳遞對象;
3.通過序列化在進程間傳遞對象。
二 至於選取哪種可參考下面的原則:
1.在使用內存的時候,Parcelable 類比Serializable性能高,所以推薦使用Parcelable類。
2.Serializable在序列化的時候會產生大量的臨時變量,從而引起頻繁的GC。
3.Parcelable不能使用在要將數據存儲在磁盤上的情況,因為Parcelable不能很好的保證數據的持續性在外界有變化的情況下。盡管Serializable效率低點, 也不提倡用,但在這種情況下,還是建議各位可以用Serializable 。
Serializable 的實現,只需要繼承 implements Serializable 即可。這只是給對象打了一個標記,系統會自動將其序列化。
Parcelable的實現需要以下步驟
(1)describeContents方法。內容接口描述,默認返回0就可以;
(2)writeToParcel 方法。該方法將類的數據寫入外部提供的Parcel中.即打包需要傳遞的數據到Parcel容器保存,以便從parcel容器獲取數據,該方法聲明如下:
writeToParcel (Parcel dest, int flags)
(3)創建相應函數的構造方法
(4)靜態的Parcelable.Creator接口,本接口有兩個方法:
createFromParcel(Parcel in) 從Parcel容器中讀取傳遞數據值,封裝成Parcelable對象返回邏輯層。
newArray(int size) return new T[size])源代碼如下
package com.example.service; import android.os.Parcel; import android.os.Parcelable; public class Person implements Parcelable{ private int age; private String name; public Person(Parcel in) { age=in.readInt(); name=in.readString(); } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub dest.writeInt(age); dest.writeString(name); } public static final Parcelable.CreatorCREATOR=new Creator () { @Override public Person[] newArray(int size) { // TODO Auto-generated method stub return new Person[size]; } @Override public Person createFromParcel(Parcel source) { // TODO Auto-generated method stub return new Person(source) ; } }; }
一、 Service簡介Service是android 系統中的四大組件之一(Activity、Service、BroadcastReceiver、ContentProv
部分用戶反應華為榮耀7i不能進行OTA升級,不能直接再WiFi網絡下直接升級最新版的EMUI系統,你的華為榮耀7i是否也出現了這個情況呢?下面安下小編給大家
1,android本來就有獲取應用緩存的方法,只是用起來有點麻煩。但我們的應用有時需要讓用戶知道緩存的大小,讓用戶及時清理緩存。直接上代碼,demo使用android s
我們知道,Android的程序打包後會生成一個APK文件,這個文件可以直接安裝到任何Android手機上,因此,反編譯就是對這個APK進行反編譯。Android的反編譯分