美文网首页
android之Parcelable介绍

android之Parcelable介绍

作者: Lee_5566 | 来源:发表于2020-12-29 10:54 被阅读0次
    image.png

    Parcelable

    Parcelable类的概述在SDK中是这样的:这些类的接口可以将实例写入或从中还原 Parcel

    简单的说Parcelable是Android为我们提供的序列化的接口。

    类似java的Serializable类。

    序列化

    由于存在于内存中的对象都是暂时的,无法长期驻存,为了把对象的状态保持下来,这时需要把对象写入到磁盘或者其他介质中,这个过程就叫做序列化。

    反序列化

    反序列化恰恰是序列化的反向操作,也就是说,把已存在在磁盘或者其他介质中的对象,反序列化(读取)到内存中,以便后续操作,而这个过程就叫做反序列化。

    概括性来说序列化是指将对象实例的状态存储到存储媒体(磁盘或者其他介质)的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把数据流字节流写入。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。

    使用实例

    进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。

    package com.status.mattest;
    
    import android.os.Parcel;
    import android.os.Parcelable;
    
    public class Book implements Parcelable {
    
        private String name;
        private int id;
        private String classify;
    
        protected Book(Parcel in) {
            name = in.readString();
            classify = in.readString();
            id = in.readInt();
        }
    
        public Book(String classify, String name, int id) {
            this.name = name;
            this.id = id;
            this.classify = classify;
        }
    
        /**
         * 反序列化
         */
        public static final Creator<Book> CREATOR = new Creator<Book>() {
            @Override
            public Book createFromParcel(Parcel in) {
                return new Book(in);
            }
    
            @Override
            public Book[] newArray(int size) {
                return new Book[size];
            }
        };
    
        @Override
        public int describeContents() {
            return 0;
        }
    
        /**
         * 序列化过程
         *
         * @param dest
         * @param flags
         */
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(name);
            dest.writeString(classify);
            dest.writeInt(id);
        }
    
    
        @Override
        public String toString() {
            return "name : " +
                    name + "\"" + "id : " + id + "\"" + "classify" + classify;
        }
    }
    

    相关文章

      网友评论

          本文标题:android之Parcelable介绍

          本文链接:https://www.haomeiwen.com/subject/fceswktx.html