首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在数据内存中存储非字符串对象?

如何在数据内存中存储非字符串对象?
EN

Stack Overflow用户
提问于 2013-06-17 21:26:57
回答 2查看 434关注 0票数 2

特别是,我希望将给定的手势存储在设备的内存中。对于这些事情,我通常使用SharedPreferences,但由于手势不是一种原始数据类型,所以在这里不起作用;我还研究了将其存储在内部存储上,这是我想要的,但这里的代码:http://developer.android.com/guide/topics/data/data-storage.html建议这只适用于字符串。

有没有一种方法可以轻松地将对象存储在设备内存中,或者当我读取文件时,是否需要将对象转换为字符串,然后再进行反向转换?

代码语言:javascript
运行
复制
Gesture mGesture;
SharedPreferences stored = getSharedPreferences("Shared Preferences", 0);
SharedPreferences.Editor editor = stored.edit();
byte[] storedGesture = serializeObject(mGesture);
String storedGestureString = new String(storedGesture);
editor.putString("Gesture Password", storedGestureString);
}

public static byte[] serializeObject(Object mObject){
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try{
        ObjectOutput out = new ObjectOutputStream(bos);
        out.writeObject(mObject);
        out.close();

        byte[] buf = bos.toByteArray();
        return buf;

    } catch (IOException ioe) {
        Log.e("serialize object", "error", ioe);
        return null;
    }
}

这是我尝试序列化的相关代码,当我在创建手势后点击确认按钮时,应用程序崩溃。基本上,确认按钮会运行此代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-17 21:33:45

我认为您可以将对象序列化,然后再序列化。这样你就可以在SharedPreferences和内部存储中使用它了。

这是一个关于如何在Java (以及Android)中实现序列化的教程-- http://www.tutorialspoint.com/java/java_serialization.htm

票数 2
EN

Stack Overflow用户

发布于 2013-06-17 21:33:44

了解Java的Serializable接口。你可以让你自己的对象实现Serializable来打洞手势,然后把这个对象写到内存中。Here是一个在Android中使用序列化的链接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17148618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档