使用Parcelable序列化数据,1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。
2)Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。
public class MediaPreviewInfo implements Parcelable {
public static final int MEDIA_TYPE_INVALID = -1;
public static final int MEDIA_TYPE_IMAGE = 1;
public static final int MEDIA_TYPE_VIDEO = 2;
public int type = MEDIA_TYPE_INVALID;
public String imageUrl = null;
public String videoUrl = null;
public String videoLocalPath = null;
public MediaPreviewInfo() {
}
public MediaPreviewInfo(JSONObject json) {
if (json != null) {
type = json.optInt("type", MEDIA_TYPE_INVALID);
imageUrl = json.optString("image");
videoUrl = json.optString("video");
videoLocalPath = DynamicAvatarDownloadManager.getDynamicAvatarFilePath(videoUrl);
}
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flag) {
dest.writeInt(type);
dest.writeString(imageUrl);
dest.writeString(videoUrl);
dest.writeString(videoLocalPath);
}
public static final Parcelable.Creator<MediaPreviewInfo> CREATOR = new Creator<MediaPreviewInfo>() {
@Override
public MediaPreviewInfo[] newArray(int size) {
return new MediaPreviewInfo[size];
}
@Override
public MediaPreviewInfo createFromParcel(Parcel source) {
MediaPreviewInfo mediaInfo = new MediaPreviewInfo();
mediaInfo.type = source.readInt();
mediaInfo.imageUrl = source.readString();
mediaInfo.videoUrl = source.readString();
mediaInfo.videoLocalPath = source.readString();
return mediaInfo;
}
};
@Override
public String toString() {
return new StringBuffer("type = ").append(type).append(", imageUrl = ").append(imageUrl)
.append(", videoUrl = ").append(videoUrl)
.append(", videoLocalPath = ").append(videoLocalPath).toString();
};
}
使用Parcelable序列化数据
最新推荐文章于 2023-08-02 14:19:39 发布