Android Serialization序列化

Android Serialization

目的:

为了方便測试传感器数据处理算法,Android程序的採集数据。序列化保存为文件。pc程序再通过反序列化读入对象,在PC上測试算法。

Java 序列化:

将Java对象序列化为二进制文件的Java序列化技术是Java系列技术中一个较为重要的技术点,在大部分情况下,开发者仅仅须要了解被序列化的类须要实现Serializable接口。使用ObjectInputStream和ObjectOutputStream进行对象的读写。

注意事项:

要序列化的对象的类要满足下面条件:

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;
    }
}
在AndroidManifest.xml中
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

參考:

Java –Serialization

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

Java
序列化的高级认识

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

ca=drs-#icomments

(序列化ID的问题,静态变量序列化,父类的序列化与Transientkeyword,对敏感字段加密,序列化存储规则)

时间: 2024-07-28 12:57:08

Android Serialization序列化的相关文章

Android中序列化对象到XMl 和 XML反序列化为对象

package com.example.xmloperation; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; imp

畅游C++ Boost Serialization 序列化

畅游C++ Boost Serialization 序列化 1.C++ Boost::serialization简介 2.工作环境 3.使用方法 3.1第一个简单的例子 -- Hello World ,将字符串内容归档到文本文件中 #include <iostream> #include <fstream> #include <string> #include <cstdio> #include <boost/archive/text_oarchive

几种Android数据序列化方案

一.引言 数据的序列化在Android开发中占据着重要的地位,无论是在进程间通信.本地数据存储又或者是网络数据传输都离不开序列化的支持.而针对不同场景选择合适的序列化方案对于应用的性能有着极大的影响. 从广义上讲,数据序列化就是将数据结构或者是对象转换成我们可以存储或者传输的数据格式的一个过程,在序列化的过程中,数据结构或者对象将其状态信息写入到临时或者持久性的存储区中,而在对应的反序列化过程中,则可以说是生成的数据被还原成数据结构或对象的过程. 这样来说,数据序列化相当于是将我们原先的对象序列

android对象序列化Parcelable浅析

一.android序列化简介 我们已经知道在Android使用Intent/Bindler进行IPC传输数据时,需要将对象进行序列化. JAVA原本已经提供了Serializable接口来实现序列化,使用起来非常简单,主要用于对象持久化以及对象的网络传输.Serializable开销比较大,因为序列化和反序列化的过程需要大量的I/O操作. Android提供了Parcelable对象序列化操作是内存序列化,主要用于Intent/Bindler的IPC数据传输. 二.Parcelable序列化使用

Android bitmap序列化

最近在开发中需要用到图片bitmap的序列化并进行传递,发现bitmap是没有序列化的,下面是自己实现的一个序列化方法,分享下. 以下是通过byte[]来进行序列化的,因为bitmap是没有序列化的,需要我们去实现,可以选择继承bitmap实现序列化,这里采用byte[]方式.接下来就可以使用Intent的putExtra(String name,Parcelable value)来发送bitmap了. import java.io.ByteArrayOutputStream; import a

&lt;经验杂谈&gt;C#/.Net中xml的Serialization序列化与DeSerializetion反序列化

1.先讲概念:.Net Framework提供了对应的System.Xml.Seriazliation.XmlSerializer负责把对象序列化到XML,和从XML中反序列化为对象.Serializer的使用比较直观,需要多注意的是XML序列化相关的Attribute,怎么把这些attribute应用到我们的对象,以及对象公共属性上面去,生成满足预期格式的XML.  本文列出了最常用的方法和特性,涵盖日常大部分的转换工作,希望大家在工作中快速上手.为了给大家直观的印象,这里给出具体的使用代码,

Android Intent 序列化和反序列化

[java] view plaincopyprint? //序列化 intent.toURI(); //反序列 化使用: Intent.parseUri(uriString, 0); 序列化 [java] view plaincopyprint? Intent intent = new Intent(ACTION); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); String intnetUri = intent.toURI(0); 反序列化 [

Android对象序列化存储

序列化的对象需要实现Serializable接口或者时容器对象 /** * Save the object * * @param context context * @param ser serializable object * @param file cache file * @throws java.io.IOException IOException */ @SuppressWarnings("JavaDoc") public static boolean saveObject

Android课程---序列化与反序列化(转)

ava序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 2.为什么需要序列化与反序列化 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本.图片.音频.视频等, 而这些数据都会以二进制序列的形式在网络上传送.那么当两个Java进程进行通信时,能否实现进程间的对象传送呢