【问题标题】:Which better serialization,deserialization OR static object哪个更好的序列化,反序列化或静态对象
【发布时间】:2023-03-23 00:54:01
【问题描述】:

我想在User对象上跟踪android应用程序存储上的用户数据,我想从性能、内存方面知道哪个更好。

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

    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 表现出色?

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

任何指导将不胜感激。

【问题讨论】:

    标签: java android serialization deserialization


    【解决方案1】:

    首先,在android中最好使用Parcelable而不是Serialization

    不要使用静态对象,除非你确定你将能够维护它并且不会让它们在内存中闲逛的次数超过应有的次数

    如果对象很简单且不太大,只需将其作为可打包传递。如果它太大,请将其保存在本地文件数据库或其他东西中,然后将其加载到您想使用的任何地方

    【讨论】:

      【解决方案2】:

      序列化是为了在磁盘上保存对象的状态。并且在许多场景中都很有用。 举个简单的例子,一个游戏,你玩游戏,通关3级,关闭,重新开始,从3级开始。

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          此外,您可以使用 Shared Preferences 来保存一些简单的字典数据。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-06-07
            • 2012-11-14
            • 2013-12-04
            • 1970-01-01
            • 1970-01-01
            • 2013-05-01
            相关资源
            最近更新 更多