繁体   English   中英

对固定数据使用 java 序列化对象

[英]Using java serialized objects for fixed data

在 Android 中将静态数据(例如哈希图、列表、对象)存储为Java 序列化流是否有任何负面影响或已知问题?

静态数据是指不随时间变化的数据,而不是数据将处于静态变量中。

序列化文件是预先生成的并作为原始文件资源嵌入到应用程序中(例如app/src/main/res/raw/my_serialized_data.ser ),然后读取:

InputStream myData = context.getResources().openRawResource(R.raw.my_serialized_data);
ObjectInputStream ois = new ObjectInputStream(charMap);
myTable = (LinkedHashMap<String, String>) ois.readObject();
ois.close();

除了人类可读性问题,我认为没有任何缺点,因为从文件中读取序列化对象肯定比从 CSV 或 SQLite 数据库之类的东西中解析数据要快。

我发现在一些现有的应用程序中使用了这种方法,目前正在考虑在我自己的代码中使用这种方法。 动机是我的数据大于 64K,将其放入 hashmap 需要将初始化代码拆分为最大大小为64K 的方法。

我假设您有充分的理由在内存中存储如此大量的数据。 它会做的一件重要事情是缓慢加载应用程序。 因为它将初始化所有静态变量。 为此,我建议采用延迟加载技术。 我喜欢使用仅在 getInstance 的第一个请求时加载的 Singleton 对象。 通过这种方式,负载将在应用程序生命周期的不同时间段中得到平衡。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM