android如何在应用程序运行时保留大型List <String []>

yoj*_*nnn 6 android out-of-memory

保持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();
} 
Run Code Online (Sandbox Code Playgroud)

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

我这样做,以便解析的数据将在每个活动中可用...而且我不必再次解析.我该怎么做才能改善它?

AMe*_*rle 1

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

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

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

希望对你有帮助。