1

我的应用程序的一小部分检查用户设备上是否存在文件。文件列表可能很长 - 显然长到足以导致少数用户出现 ANR。一千个文件绝不是不可能的。

代码很简单:

new File(fileUrl).exists()

我目前正在主线程上执行此操作,因为我需要阻塞操作。我可以使用一个AsyncTask类来完成它,然后在完成后继续其余的工作,但我想知道这是否是一个有效的原因?

所有的工作都是在后台完成的Service,如果这有什么改变的话。我也可能会遇到方向变化,这可能会让AsyncTask. 会Handler更好吗?

所以,总结一下:我是否应该在后台服务中使用 AsyncTask 进行可能长时间运行的操作,其中可能会发生方向变化?

4

1 回答 1

2

首先, aService不受方向变化的影响 - 它只是当前正在运行的Activity类被销毁/重新创建。

其次,anAsyncTask在 a 中没有太大优势,Service因为它被设计为能够与 UI 交互。它会带来在单独线程上工作的优势,但其余方法基本上是多余的。

我建议使用IntentService管理自己的工作线程来工作。请参阅IntentService 文档

于 2012-12-02T00:09:12.070 回答