6

List<String[]>我的应用程序运行一段时间的最佳方法是什么?我的方法有问题。由于列表太大,大多数情况下都会给我一个 OutOfMemory 错误。

List<String[]>是解析我在线下载的csv文件的结果。我所做的是解析活动中的 csv,然后将其结果保存在静态类成员中,例如:

String url = "http://xxx/pdf/pms/pms_test.csv";
try {
    InputStream input = new URL(url).openStream();
    CSVReader reader = new CSVReader(new InputStreamReader(input));
    SchedController.sched = reader.readAll();
    input.close();
} 

...然后访问ClassName.sched不同的活动。

我这样做是为了在每个活动中都可以使用解析的数据......而且我不必再次解析。我能做些什么来改善它?

4

2 回答 2

1

我认为你可以有两种方法。

  1. 您保存文​​件并以延迟加载的方式对其进行解析
  2. 您创建一个数据库并保存您的数据。

我建议你创建一个数据库,这并不难,让你管理好你的数据。您可以轻松地使用光标进行延迟加载,或使用 ORM(ORMLite / Greendao)......我认为这是加载数据的最佳方式和最快方式。

希望这会帮助你。

于 2012-07-24T09:18:12.643 回答
1

只是为了添加到 Paresh 的评论中。我可以建议我在我的应用程序中使用的类似内容。

例如,我需要在商店中显示商品列表。(每件商品都有 ID、名称和费用)。

为此,我首先向服务器发出请求以获取项目数,例如itemCount。现在我将页面中显示的项目数设置为 100。如果itemCount大于 100,我会显示一条警报,说只会显示 100 个项目,并且button可以添加下一个以下载下一组项目。或者,如果是搜索,您可以要求用户返回并细化搜索。如果itemCount小于 100 那么你不会有任何问题

这种方式可以实现分页OutOfMemory以避免问题

于 2012-07-24T09:23:57.950 回答