【发布时间】:2013-09-07 22:42:29
【问题描述】:
我有一个 ArrayList allFeeds 和一个读取序列化数据的方法。
@SuppressWarnings("unchecked")
public void loadFile() {
final String FILENAME = "feeds.ser";
File file = fileContext.getApplicationContext().getFileStreamPath(FILENAME);
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
allFeeds = (ArrayList<Feed>) ois.readObject();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
序列化数据存储在一个 0.49mb 大小的文件中,由 33 个 Feed 对象组成。 Feed 对象的结构如下,其中 HashMap 最多可保存 900 个密钥对值:
int id;
String name;
int datatype;
String tag;
Long time;
Double value;
String dpInterval;
HashMap<Long, Double> historicFeedData;
将数据加载回数组列表需要相当长的时间(平均时间为 13.5 秒)。 GC_CONCURRENT 在执行期间反复释放内存。
有没有办法提高此操作的速度,或者仅仅是它正在处理的数据量?如果是这样,是否建议将其推送到 aSyncTask 或后台服务中?
【问题讨论】:
-
缺少基本信息,例如多长时间、多少字节、对象结构。
-
同意 - 我昨晚很晚才写了这篇文章,经过反思,它缺乏信息。已添加它以使其更全面。谢谢!
标签: java android performance arraylist