现在的位置: 首页 > 综合 > 正文

JAVA Serialization 序列化

2013年07月07日 ⁄ 综合 ⁄ 共 1169字 ⁄ 字号 评论关闭

最近在做Android 项目时用到了WebView,可悲的是,在html上有无数用户的操作,而这些操作被JS返回给了Android的内存中,当深层的Activity开启时,之前的Activity很可能被系统放掉,导致内存里的对象丢失,无法恢复之前的操作,因此需要对对象进行序列化,将对象保存在flash中,返回的时候进行反序列化,从而恢复对象

1. 重写onSaveInstanceState

    @Override
    protected void onSaveInstanceState(Bundle outState) {
}

将对象在方法中进行序列化,尤其需要注意的是,不仅对象需要实现Serialization接口,其引用的对象也需要实现该接口,否则会抛出异常,有意思的是,该接口并不需要实现任何接口方法,Thinking in java 中说,他只是一个旗帜

public class Test implements Serializable{
}

2. 序列化与反序列化

    private static Object ByteToObject(String filePath) {

        java.lang.Object obj = null;
        try {
            FileInputStream bi = new FileInputStream(filePath);
            ObjectInputStream oi = new ObjectInputStream(bi);
            obj = oi.readObject();
            bi.close();
            oi.close();
        }
        catch(Exception e){
            System.out.println("translation"+e.getMessage());
            e.printStackTrace();
        }
        return obj;
    }

    public void ObjectToByte(String filePath,Object obj) {

        File tempFile = new File(filePath.substring(0,filePath.lastIndexOf("/")));
        tempFile.delete();
        if(!tempFile.exists()){
            tempFile.mkdirs();
        }
        try {
            FileOutputStream bo = new FileOutputStream(filePath);
            ObjectOutputStream oo = new ObjectOutputStream(bo);
            oo.writeObject(obj);
            bo.close();
            oo.close();
        }
        catch(Exception e){
            System.out.println("translation"+e.getMessage());
            e.printStackTrace();
        }
    }

这两个函数也是我Search到的,稍微修改了一下就可以使用了。

抱歉!评论已关闭.