zoukankan      html  css  js  c++  java
  • 【Android】Android中Serializable接口的定义和使用

    1、序列化是干什么的?

           简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。

    2、什么情况下需要序列化   
        a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
        b)当你想用套接字在网络上传送对象的时候;
        c)当你想通过RMI传输对象的时候;

    3、Parcelable和Serializable的区别:

    内存间数据传输时推荐使用Parcelable,如activity间传输数据

    保存到本地或者网络传输时推荐使用Serializable

    serialVersionUID 用来表明类的不同版本间的兼容性。

    有两种生成方式: 一个是默认的1L;另一种是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段 。

    java类中为什么需要重载 serialVersionUID 属性。 
    当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。 把Java对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为Java对象的过程称为对象的反序列化。 

    ========================================

    SerializableDemo:MainActivity.java通过Serializable接口保存数据并跳转到FirstActivity.java,在FirstActivity.java中读取数据。

    Person类

    package com.example.serializetest;
    
    import java.io.Serializable;
    public class Person implements Serializable{
        
        private static final long serialVersionUID = 1L;
        // 成员变量
        private int id;
        private String name;
        
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
       
    }

    MainActivity.java

             // 封装数据
            Person p = new Person();
            p.setId(320840);
            p.setName("小伙子");
            Intent i = new Intent(MainActivity.this, FirstActivity.class);
            i.putExtra("Person", p);
            startActivity(i);    

    FirstActivity.java

           Person p = (Person)getIntent().getSerializableExtra("Person");       
           System.out.println("身份证"+p.getId());
           System.out.println("姓名"+p.getName());    

     下载地址:http://download.csdn.net/detail/xubuhang/8695671

      其他例子:http://www.tuicool.com/articles/2ymUVn

      传递List<Object>传递List<Object>的方法:http://blog.csdn.net/wirelessqa/article/details/8589200

                              作者:xubuhang                出处:http://www.cnblogs.com/xubuhang/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

     
查看全文
  • 相关阅读:
    数据库系统学习(九)-嵌入式SQL语言之基本技巧
    操作系统学习(九)-- 操作系统之文件系统(目录)
    操作系统学习(八)-- 操作系统之磁盘(调度)与文件(实现)
    从windows server 2003中学到的事儿
    一名游戏开发者的告白
    所谓“学术境界”
    java解惑
    程序员的职业素养
    行业大会_平台
    寻找优秀的程序员
  • 原文地址:https://www.cnblogs.com/xubuhang/p/4500479.html
  • Copyright © 2011-2022 走看看