天天看点

Android序列号接口Parcelable

public interface Parcelable

android.os.Parcelable 

描述: parcel ['pɑ:sl] n. 包裹,小包 vt. 打包;捆扎

bundle ['bʌndl] n. 束;捆 vt. 捆 vi. 匆忙离开

Interface for classes whose instances can be written to and restored from a

Parcel

. Classes implementing the Parcelable interface must also have a static field called

CREATOR

, which is an object implementing the

Parcelable.Creator

interface.

A typical implementation of Parcelable is:

 public class MyParcelable implements Parcelable {
     private int mData;

     public int describeContents() {
         return 0;
     }

     public void writeToParcel(Parcel out, int flags) {
         out.writeInt(mData);
     }

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

         public MyParcelable[] newArray(int size) {
             return new MyParcelable[size];
         }
     };
     
     private MyParcelable(Parcel in) {
         mData = in.readInt();
     }
 }      

借助Bundle public class MusicData implements Parcelable {

public final static String KEY_MUSIC_DATA = "MusicData";

private final static String KEY_MUSIC_NAME = "MusicName";

private final static String KEY_MUSIC_TIME = "MusicTime";

private final static String KEY_MUSIC_PATH = "MusicPath";

private final static String KEY_MUSIC_ARITST = "MusicAritst";

public String mMusicName;

public int  mMusicTime;

public String mMusicPath;

public String mMusicAritst;

public MusicData()

{

mMusicName = "";

mMusicTime = 0;

mMusicPath = "";

mMusicAritst = "";

}

//写入

@Override

public void writeToParcel(Parcel dest, int flags) {

Bundle bundle = new Bundle();

bundle.putString(KEY_MUSIC_NAME, mMusicName);

bundle.putString(KEY_MUSIC_PATH, mMusicPath);

bundle.putString(KEY_MUSIC_ARITST, mMusicAritst);

bundle.putInt(KEY_MUSIC_TIME, mMusicTime);

dest.writeBundle(bundle);

}

//读取

public static final Parcelable.Creator<MusicData> CREATOR   = new Parcelable.Creator<MusicData>() {

@Override

public MusicData createFromParcel(Parcel source) {

MusicData Data = new MusicData(); 

Bundle mBundle = new Bundle();

mBundle = source.readBundle();

Data.mMusicName = mBundle.getString(KEY_MUSIC_NAME);

Data.mMusicTime = mBundle.getInt(KEY_MUSIC_TIME);

Data.mMusicPath = mBundle.getString(KEY_MUSIC_PATH);

Data.mMusicAritst = mBundle.getString(KEY_MUSIC_ARITST);

return Data;

}

@Override

public MusicData[] newArray(int size) {

return new MusicData[size];

}

};

@Override

public int describeContents() {

return 0;

}

}

继续阅读