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/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

     
查看全文
  • 相关阅读:
    topcoder srm 681 div1
    topcoder srm 683 div1
    topcoder srm 684 div1
    topcoder srm 715 div1
    topcoder srm 685 div1
    topcoder srm 687 div1
    topcoder srm 688 div1
    topcoder srm 689 div1
    topcoder srm 686 div1
    topcoder srm 690 div1 -3
  • 原文地址:https://www.cnblogs.com/xubuhang/p/4500479.html
  • Copyright © 2011-2022 走看看