哪个更好的序列化,反序列化或静态对象

时间:2014-06-17 09:01:55

标签: java android serialization deserialization

我想在User对象上跟踪Android应用程序商店中的用户数据,我想从性能,内存方面了解更好。

1- Serialize User object,然后在每次需要时反序列化用户对象。

    public static void writeObject(Context context, String key, Object object)
        throws IOException {
    FileOutputStream fos = context
            .openFileOutput(key, Context.MODE_PRIVATE);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(object);
    oos.close();
    fos.close();
}

public static Object readObject(Context context, String key) {
    try {
        FileInputStream fis = context.openFileInput(key);
        ObjectInputStream ois = new ObjectInputStream(fis);
        Object object = ois.readObject();
        return object;
    } catch (IOException ioe) {
        ioe.printStackTrace();
    } catch (ClassNotFoundException ex) {
        ex.printStackTrace();
    }
    return null;
}
  • IS serialization,deserialization是否达到了效果?

如果是,那么使用Static对象来跟踪用户数据抛出所有应用程序会更好,或者有另一个首选方法来跟踪用户数据抛出所有android应用程序。

任何指导都将不胜感激。

4 个答案:

答案 0 :(得分:0)

序列化用于保存磁盘上对象的状态。并且在许多情况下都很有用。 让我们举一个简单的例子,一个游戏,你玩游戏,清除第三级,关闭它,当你再次开始它从第三级开始。

使用静态对象无法实现。因为当游戏关闭时,JVM会退出,静态对象会丢失值。

此处序列化出现在图片中,当游戏开始时,值被读取并分配回来。

现在,如果您的应用程序不使用此功能,请选择静态对象,因为序列化/ dfeserialization会影响性能。

答案 1 :(得分:0)

进行序列化,反序列化,您将限制应用程序添加要存储的新数据以供用户信息。您应该以定义的格式保存用户信息以避免此问题。

此外,您的应用程序一次只能由单个用户使用,因此考虑到性能问题仅值于阅读以前的用户。

答案 2 :(得分:0)

序列化和反序列化太慢了。如果您可以在静态对象中维护信息,这是更好的方法。仅在需要在应用程序关闭时保存数据时才使用序列化。

此外,您可以使用“共享首选项”保存一些简单的词典数据。

答案 3 :(得分:0)

首先,在android中,使用Parcelable比使用Serialized

更好

不要使用静态对象,除非你确定自己能够维护静态对象,不要让它们在内存中更多地进行环聊

如果对象很简单且不太大,只需将其作为parcelable传递..如果它太大,将其本地保存在文件数据库或其他内容中,然后将其加载到任何您想要使用它的地方