相关知识:
知识点:Android系统中Parcelable和Serializable的区别
Serializable的使用
Serializable的使用比较简单,直接实现Serializable接口就好。
Parcelable的使用
Parcelable的使用就稍微麻烦一点,但效率比前者好很多。
Demo主体
package com.example.guan.testapp.model;
import android.os.Parcel;
import android.os.Parcelable;
public class GuanFile implements Parcelable {
//这个类比较简单,只包含三个字段
public String FileName;
public String FileUrl;
public String FilePath;
//构造方法,用于赋值
public GuanFile(String fileName, String fileUrl, String filePath) {
this.FileName = fileName;
this.FileUrl = fileUrl;
this.FilePath = filePath;
}
//===========以下方法实现了Parcelable功能===========================
protected GuanFile(Parcel in) {
FileName = in.readString();
FileUrl = in.readString();
FilePath = in.readString();
}
public static final Creator<GuanFile> CREATOR = new Creator<GuanFile>() {
@Override
public GuanFile createFromParcel(Parcel in) {
return new GuanFile(in);
}
@Override
public GuanFile[] newArray(int size) {
return new GuanFile[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(FileName);
dest.writeString(FileUrl);
dest.writeString(FilePath);
}
}
使用
ArrayList<GuanFile> guanFiles=new ArrayList<GuanFile>();
guanFiles.add(new GuanFile("tmpname",AppCommon.downloadURL,filePath));
Intent intent=new Intent(mContext, Other.class);
intent.putExtra("guanfiles",guanFiles);
ArrayList<GuanFile> guanFiles = intent.getParcelableArrayListExtra("guanfiles");
GuanFile类实现了Parcelable接口。在通过Intent在传递对象的时候,就可以通过getParcelableArrayListExtra获取。