Parcelable接口

Parcelable接口用来将一个类变成可序列化对象。大家都知道,java中还提供了一种方法使对象可序列化,就是Serializable接口。两者的区别在于:Serializable接口是为要存储在数据库,用于网络传输,保存类属性到本地的类设计的。但是Serializable在android中使用效率较低。所以Android中出现了Parcelizable接口来代替Serializable接口,Parclizable接口可实现对象在进程间,组件间高效的传递。

使用方法

使用Parcelizable比Serializable实现更多的方法。想贴一个完整代码:

public class CookInfo implements Parcelable {    private String title;    private String description;    private String season;    private Bitmap picture;    @Override    public int describeContents() {        return 0;    }    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(title);        dest.writeString(description);        dest.writeString(season);        dest.writeParcelable(picture, flags);    }    public static final Creator<CookInfo> CREATOR = new Creator<CookInfo>() {        @Override        public CookInfo createFromParcel(Parcel in) {            CookInfo ci = new CookInfo();            ci.title = in.readString();            ci.description = in.readString();            ci.season = in.readString();            ci.picture = in.readParcelable(Bitmap.class.getClassLoader());            return ci;        }        @Override        public CookInfo[] newArray(int size) {            return new CookInfo[size];        }    };    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getDescription() {        return description;    }    public void setDescription(String description) {        this.description = description;    }    public String getSeason() {        return season;    }    public void setSeason(String season) {        this.season = season;    }    public Bitmap getPicture() {        return picture;    }    public void setPicture(Bitmap picture) {        this.picture = picture;    }}

主要要实现:

  1. describeContents() 方法:直接返回0就可以了
  2. writeToParcel() 方法:需要用 dest.writeXXX() 方法写类中的每一个属性,当然 writeXXX 要符合属性的类型。基本类型大家都知道,如果要写入的属性同样是一个自定义对象,则该对象也必须继承 Parcelizable接口。
  3. 静态 Creator 对象:需要实现2个方法,createFromParcel() 和 newArray() 方法。
    createFromParcel() 方法需要自己创建一个自身实例对象,然后用Parcel的readXXX() 方法再读取到实例中,然后返回实例。newArray() 方法是在初始化一个Parcelizable列表时使用。

大家看代码自己体会一下吧!

更多相关文章

  1. Android解决输入法自动弹出方法大全
  2. Android PinyinIME 源码笔记 -- 1. 底层服务接口简介
  3. Android 从硬件到应用:一步一步向上爬 4 -- 使用 JNI 方法调硬件
  4. Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断
  5. 通过对inflate与 findViewById 方法的探究深度了解一下Android
  6. Android 屏幕旋转生命周期以及处理方法

随机推荐

  1. 单独编译Android(安卓)app模块
  2. Could not resolve all files for config
  3. android中设置Animation 动画效果
  4. Android(安卓)Phone 类的详细 分析 各个
  5. Android(安卓)Studio阶段性学习总结_1
  6. [置顶] Android输入法框架
  7. 极光推送Android集成以及使用
  8. Android(安卓)基础
  9. Android9.0 SIM卡初始化---更新数据(代码
  10. Android(安卓)UI 问题随笔