Java 文件API正在导致ANR';s

Java 文件API正在导致ANR';s,java,android,file,android-asynctask,Java,Android,File,Android Asynctask,我的应用程序的一小部分检查用户设备上是否存在文件。文件列表可能相当长-显然足够长,导致ANR的几个用户。一千个文件绝非不可能 代码非常简单: new File(fileUrl).exists() 我目前正在主线程上执行此操作,因为我需要阻塞操作。我可以使用AsyncTask类来完成它,然后在完成后继续剩下的工作,但我想知道这是否是一个合理的原因 所有的工作都是在后台服务中完成的,如果这改变了什么的话。我还可能会经历方向的变化,这可能会让AsyncTask感到恼火。处理程序会更好吗 因此,总而言

我的应用程序的一小部分检查用户设备上是否存在文件。文件列表可能相当长-显然足够长,导致ANR的几个用户。一千个文件绝非不可能

代码非常简单:

new File(fileUrl).exists()
我目前正在主线程上执行此操作,因为我需要阻塞操作。我可以使用
AsyncTask
类来完成它,然后在完成后继续剩下的工作,但我想知道这是否是一个合理的原因

所有的工作都是在后台
服务中完成的,如果这改变了什么的话。我还可能会经历方向的变化,这可能会让
AsyncTask
感到恼火。
处理程序会更好吗


因此,总而言之:我是否应该在后台服务中使用AsyncTask来执行可能会发生方向更改的长时间运行的操作?

首先,
服务
不受方向更改的影响-只有当前正在运行的
活动
类被销毁/重新创建

其次,
异步任务
服务
中没有多大优势,因为它被设计为能够与UI交互。它将提供在单独线程上工作的优势,但其余方法基本上是冗余的


我建议使用
IntentService
,它管理自己的工作线程来完成工作。参见

谢谢,这澄清了很多问题。我有点困惑,当在轮换变更服务中运行时,异步任务是否会被取消,但这很好。我来看看IntentService类。现在就投票吧!IntentService真是太棒了!我很难过,直到现在才知道他们:(@MichellBak:“IntentService太棒了!”是的,我最喜欢的Android类之一。我感觉到你的痛苦-我花了几个月的时间才发现<代码>智能服务>代码>在这里读帖子是偶然的。我当前的应用程序使用了<代码>智能服务> <代码>,由每日<代码> AlalMasks<代码>闹钟下载。非常好的东西。享受吧