Android Serialization序列化

jopen 9年前發布 | 13K 次閱讀 Android Android開發 移動開發

目的:

為了方便測試傳感器數據處理算法,Android程序的采集數據,序列化保存為文件;pc程序再通過反序列化讀入對象,在PC上測試算法。

Java 序列化:

Java對象序列化為二進制文件的Java序列化技術是Java系列技術中一個較為重要的技術點,在大部分情況下,開發人員只需要了解被序列化的類需要實現Serializable接口,使用ObjectInputStreamObjectOutputStream進行對象的讀寫。

注意事項:

要序列化的對象的類要滿足以下條件:

1.類要實現Serializable接口

2. serialize deserialize程序要保證package一致

3.serialVersionUID要一致


例程:

    package com.example.coolwaterld.serializedemo;  
    import java.io.Serializable;  
    class Person implements Serializable //Added implements Serializable  
    {  
        String name="";  
        private String number="";  
        private String address="";  
        private static final long serialVersionUID = 1L;  
           public String getName()  
        {  
            return name;  
        }  
        public String getNumber()  
        {  
            return number;  
        }  
        public String getAddress()  
        {  
            return address;  
        }  
    }  

    package com.example.coolwaterld.serializedemo;  
    import android.app.Activity;  
    import android.os.Bundle;  
    import android.util.Log;  
    import java.io.File;  
    import java.io.FileInputStream;  
    import java.io.FileOutputStream;  
    import java.io.ObjectInputStream;  
    import java.io.ObjectOutputStream;  
    public class MainActivity extends Activity {  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
            Person person = new Person();  
            person.setName("coolwaterld");  
            person.setAddress("BJ");  
            person.setNumber("123");  
            //save the object  
            saveObject(person);  
            // Get the Object  
            Person person1 = (Person)loadSerializedObject(new File("/sdcard/person.bin"));   
            Log.i("Name", person1.getName());  
        }  
        public void saveObject(Person p){  
            try  
            {  
                ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("/sdcard/kvmatrix.bin")));   
                oos.writeObject(p);   
                oos.flush();   
                oos.close();  
            }  
            catch(Exception  ex)  
            {  
                Log.v("Serialize write: ", ex.getMessage());  
                ex.printStackTrace();  
            }  
        }  
        public Object loadSerializedObject(File f)  
        {  
            try  
            {  
                ObjectInputStream ois = new ObjectInputStream(new FileInputStream(f));  
                Object o = ois.readObject();  
                return o;  
            }  
            catch(Exception ex)  
            {  
                Log.v("Serialize Read: ",ex.getMessage());  
                ex.printStackTrace();  
            }  
            return null;  
        }  
    }  

  1. 在AndroidManifest.xml中  
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

參考:

Java –Serialization

http://www.tutorialspoint.com/java/java_serialization.htm

Java 序列化的高級認識

http://www.ibm.com/developerworks/cn/java/j-lo-serial/index.html?ca=drs-#icomments

(序列化ID的問題,靜態變量序列化,父類的序列化與Transient關鍵字,對敏感字段加密,序列化存儲規則)

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!