Android进阶 - 1 - Parcelable和Serializable使用详解

       如果我们需要通过Intent和Binder传输数据时就需要使用Parcelable或者Serializable对对象序列化。甚至有时候在把持久化的对象保存在存储设备上或者通过网络传输给其他客户端的时候,需要使用Serializable来完成对象的持久化。在实际开发过程中,习惯了使用序列化传输数据,但是并没有深入了解。Andriod进阶从序列化开始。

Serializable

    简介

       Serializable是Java所提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作。在实际使用时相当的简单,只需要在类的声明中实现Serializable接口即可,同时在类中声明一个标识符即可实现默认的序列化过程。
        private static final long serialVersionUID = 29347521293479523L;

    Serializable的用途

    作为一种持久化机制

        如果使用的是FileOutputStream流的方式,则数据将被自动地写入文件中,

    作为一种复制机制

        如果使用的是ByteArrayOutputStream流的方式,数据将写入内存中的字节数组中。该字节数组可以用来创建初始对象的副本,

   作为一种通信机制

        如果是使用套接字(Socket)流的方式,则数据自动地通过网络连接传输一另一个端点,并由这个端点上的程序来决定做什么。

   简单实现

 
      public class User implements Serializable{

        private static final long serialVersionUID = 1L;

        private int userId;
        private String name;
        private boolean isMale;

        public User(int userId, String name, boolean isMale) {
            this.userId = userId;
            this.name = name;
            this.isMale = isMale;
        }

        @Override
        public String toString() {
            return "User{" +
                    "userId=" + userId +
                    ", name='" + name + '\'' +
                    ", isMale=" + isMale +
                    '}';
        }
    }
    
    // 核心代码
     User user = new User(1, "Green", true);
    ObjectOutputStream out = null;
    out = new ObjectOutputStream(new FileOutputStream("cache.text"));
    out.writeObject(user);
    out.close();
    
    ObjectInputStream in = null;
    in = new ObjectInputStream(new FileInputStream("cache.text"));
    User userRead = (User) in.readObject();
    in.close();

    serialVersionUID的必要性

    serialVersionUID是用来辅助序列化过程和反序列化过程,原则上序列化后的数据中的serialVersionUID 只有和当前类的serialVersionUID相同的才能正常地反序列化。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值