Parcelable及Serializable的使用

2017-04-11 19:20:24来源:CSDN作者:u013806583人点击

相关知识:

知识点:Android系统中Parcelable和Serializable的区别

http://www.jianshu.com/p/a60b609ec7e7

http://lydia-fly.iteye.com/blog/2029269


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获取。

微信扫一扫

第七城市微信公众平台