• Parcelable使用(一)


    android有两种序列化方式:一是实现Serializable接口(是JavaSE本身就支持的),二是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC))。实现Serializable接口非常简单,声明一下就可以了,而实现Parcelable接口稍微复杂一些,但效率更高,推荐用这种方法提高性能。

    为什么要序列化?

    1)保存对象的字节序列到本地文件中;

    2)通过序列化对象在网络中传递对象;

    3)通过序列化在进程间传递对象。

    Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点,但此时还是建议使用Serializable ,所以Parcelable主要用于进程间通信,而网络传递数据使用比较复杂.Parcelable可用于Activity或Service之间传递数据.

    public class MyParcelable implements Parcelable {
    
        protected MyParcelable(Parcel in) {
        }
    //必须实现的变量CREATOR
        public static final Creator<MyParcelable> CREATOR = new Creator<MyParcelable>() {
            @Override
            public MyParcelable createFromParcel(Parcel in) {
                return new MyParcelable(in);
            }
    
            @Override
            public MyParcelable[] newArray(int size) {
                return new MyParcelable[size];
            }
        };
    //必须实现的两个方法
        @Override
        public int describeContents() {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel dest, int flags) {//可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面
        }
    }

    上面是实现Parcelable的基本

    public class Book implements Parcelable
    {
        private String bookName;
        private String author;
        private int publishDate;
    
        public Book()
        {
    
        }
        public Book(Parcel in)//实现带Parcel的构造方法,读取Parcel对象
        {
            bookName = in.readString();
            author = in.readString();
            publishDate = in.readInt();
        }
    //生成成员变量的getset方法
        public String getBookName()
        {
            return bookName;
        }
    
        public void setBookName(String bookName)
        {
            this.bookName = bookName;
        }
    
        public String getAuthor()
        {
            return author;
        }
    
        public void setAuthor(String author)
        {
            this.author = author;
        }
    
        public int getPublishDate()
        {
            return publishDate;
        }
    
        public void setPublishDate(int publishDate)
        {
            this.publishDate = publishDate;
        }
    
        @Override
        public int describeContents()//返回0或1
        {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel out, int flags)//将你的对象映射为Parcel对象,进行传递
        {
            out.writeString(bookName);
            out.writeString(author);
            out.writeInt(publishDate);
        }
    
        public static final Parcelable.Creator<Book> CREATOR = new Creator<Book>()
        {
            @Override
            public Book[] newArray(int size)
            {
                return new Book[size];
            }
    
            @Override
            public Book createFromParcel(Parcel in)//将Parcel对象映射为你的对象,传入Parcel进入Book构造方法
            {
                return new Book(in);
            }
        };
    
    
    
    }

    以上是Parcelable接口的简单实现

  • 相关阅读:
    springboot配置大全
    springboot上传文件时500错误,提示临时目录无效
    Springboot上传文件临时目录无效
    SpringBoot 文件上传临时文件路径问题
    SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案
    tomcat下的work目录和temp目录
    Http协议报文格式
    multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
    Nginx的三种应用场景介绍
    SpringBoot: 浅谈文件上传和访问的坑 (MultiPartFile)
  • 原文地址:https://www.cnblogs.com/Ocean123123/p/10955495.html
Copyright © 2020-2023  润新知