«

Parcelable接口介绍与使用

时间:2024-3-2 18:32     作者:韩俊     分类: Android


  1. Parcelable接口

    Parcelable的实例可以被写入和恢复一个 Parcel类。一个类实现Parcelable接口也必须有一个公开的静态的常态的字段CREATOR,这是实现 Parcelable.Creator 的对象。

    实现Parcelable案例:

    public class Student implements Parcelable {
    
    private String name;// 你要序列化的数据
    private int age;// 你要序列化的数据
    
    public Student() {
    }
    
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // get和set方法,略
    // ...
    
    <span style="color:#ff9966;">// 注意修饰符public static final都必须要有,名字CREATOR也是固定的,不能改成小写或其他名字</span>
    public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() {
        @Override
        public Student createFromParcel(Parcel in) {
            return new Student(in);
        }
    
        @Override
        public Student[] newArray(int size) {
            return new Student[size];
        }
    };
    
    // 注意这个构造方法是私有的
    private Student(Parcel in) {
        <span style="color:#ff9966;">// 数据读取的顺序要和写入时保持一致</span>
        name = in.readString();
        age = in.readInt();
    }
    
    // 描叙内容,不用管
    @Override
    public int describeContents() {
        return 0;
    }
    
    <span style="color:#ff9966;">// 将数据写入Parcel中,Parcel对象似于一个双向流,既可以写入又可以读取</span>
    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeString(name);
        out.writeInt(age);
    }
    }


    Parcelable是一种类似于Serializable的序列化接口,效率比Serializable略高效,但不能使用Parcelable将数据存储在磁盘上,而只能序列化到内存中(只能代替DataOutputStream和DataInputStream),因为Parcelable不能很好的保证数据的持续性,所以Parcelable主要用于Intent数据传递,也可以用于进程间通信。

标签: android

热门推荐