我可以在主线程上读取一个小的txt文件,还是应该总是避免I / O?

时间:2014-11-21 17:52:40

标签: android multithreading

我正在阅读一个带有几行的小.json文件。它存储在内部应用程序文件夹中的用户设备上。

我所做的就是:

JSONObject jsonObject = new JSONObject(MyUtils.inputStreamToString(MyUtils.fileToFileInputStream(context.getFileStreamPath("last_update.json"))));
        dateOfLastUpdate = jsonObject.getString("lastUpdate");

目前我已经在它周围包装了一个异步任务。

如果删除异步任务并在主UI线程上运行该怎么办?

我们是否应该始终同步所有I / O操作?

1 个答案:

答案 0 :(得分:3)

是的,您应始终使用I / O的异步操作。

我能想到的唯一合理的例外情况是,在显示任何类型的UI之前,您需要阅读某种配置/密钥文件。

考虑这些论据以支持AsyncTask

  • 如果FS出现问题会怎样?我想你会想要一个“加载......”动画,可能还有一个选项可以取消吗?如果是主线程访问,您只需冻结应用程序。
  • 您目前在文件中只有“lastUpdate”字段,因此它很小,并且可能很容易直接读取它(根本不需要时间)。您的联合开发人员是否知道它必须保持小规模?你是以某种方式强制执行的吗?小“只需一行存储”文件随着时间的推移会逐渐成长为庞大的配置文件。现在最好只进行异步访问,因为它不会让你这么做。
  • 考虑一下如果更改存储介质会发生什么。它现在在FS上,也许你将来必须将它移到云端?或者新的Android带有特殊的“速度更慢但更便宜”的长期存储?您是否愿意确保它仍然“正常工作”,或者在应用程序中搜索每个调用以确保它们都是异步并且不会在运行时失败?

总而言之 - 将其作为异步任务留下并不会对您造成伤害 - 但可以防止将来出现许多潜在的麻烦。