从16MB文件中读取数据而不冻结应用程序的最佳方法

时间:2019-06-03 10:14:56

标签: java android

我有一个问题,找不到解决的办法。我需要读取一个包含大量数据的文本文件(文件有16MB)。该文件包含12列,每列中都有整数值。通常,我的问题是如何在不冻结应用程序的情况下执行此操作。我的文件位于项目的Assets文件夹中,并且尝试使用以下命令:

AssetManager assetManager = this.getAssets();
try {
    InputStream inputStream = assetManager.open("3333.ecg");
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
    String str;
    while ((str = bufferedReader.readLine()) != null) {
        stringBuilder.append(str);
    }
} catch (IOException e) {
    e.printStackTrace();
}

但是应用程序冻结。我的目标是从每一列获取数据并将其保存到整数数组列表中。我正在寻找一些建议。

谢谢。

1 个答案:

答案 0 :(得分:1)

使用它在后台运行它:

AsyncTask.execute(new Runnable() {
   @Override
   public void run() {
    AssetManager assetManager = this.getAssets();
    try {
        InputStream inputStream = assetManager.open("3333.ecg");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String str;
        while ((str = bufferedReader.readLine()) != null) {
            stringBuilder.append(str);
    }
    } catch (IOException e) {
        e.printStackTrace();
    }
   }
});