【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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM