Android执行文件操作异步

时间:2017-06-27 12:12:01

标签: android file asynchronous loader

在android中是最好的做法,在单独的线程中做所有的努力工作,永远不会阻止ui。现在我唯一的目标是列出应用程序内部目录的所有文件,如:

final File directory = new File( context.getFilesDir(), "images" );
if( !directory.exists() ) {
    directory.mkdirs();
}
return directory.listFiles();

我应该在Loader或AsyncTaskLoader中执行此操作吗?在我的脑海中弹出另一个问题。即如果我的Loader通过FileObserver监听目录更改,那么这个观察者是否在主线程中构建并执行以下操作:

new FileObserver( new File( context.getFilesDir(), "images" ).getPath() ) ...

然后该目录也应加载异步。

1 个答案:

答案 0 :(得分:1)

列出目录文件通常是一个非常快速的操作,并且不需要后台线程。

如果您想收听文件更改,请回答有关FileObserver多线程的问题的第二部分:

创建FileObserver的线程并不重要。所有工作都在特殊的FileObserver线程上进行。在此特殊线程中调用onEvent。然后,您应该手动处理所需的线程。 onEvent文档非常明确:

  

事件处理程序,必须由子类实现。这个   在特殊的FileObserver线程上调用方法。它运行   独立于任何线程,所以要小心使用适当的   同步!考虑使用Handler.post(java.lang.Runnable)来   将事件处理工作转移到主线程以避免并发   问题。