2014-01-14 59 views
0

我的程序将搜索文件系统,所以我知道我需要Service或IntentService,但我不确定哪一个。 (以前我想用的AsyncTask但不适合)Android - 我应该在我的程序中使用IntentService还是ThreadPool?

我知道IntentService将同时运行一个线程,实际上这可能是我想要什么,但不知道

如果有一个可移动SD在手机卡中,我将在单独的线程上执行搜索。一个线程将搜索内部SD和另一个外部SD。

问题是,我可以输入多个文件夹路径来搜索文件,但我将只使用一个文件系统的线程。例如,我有10条路径在Internal SD上搜索,5条在External上搜索,但我只使用两个线程。一个搜索内部,一个外部,并且当任何线程完成时,它将启动对内部的另一搜索,搜索外部时也会发生相同的搜索。

我不知道如果使用多线程服务或两个IntentServices,如果这甚至可能会更好吗?

回答

1

我会使用Service(与IntentService工作类似,但不是子类),它可以将任务分配给线程池。

IntentService只能做1个后台线程。如果这对你来说足够了(它可能正在接近多线程实现),你也可以这样做。只需将每个目录/文件系统/任务排入服务意图处理。

它应该是Service,因为Android会在您不知道正在运行的任务时终止您的应用。普通线程不被视为运行。

+0

嗯,我想使用服务,但我不知道它是否有一些工具启动线程一个接一个已经结束,因为我需要只运行线程每个文件系统 – user3086577

+0

@ user3086577你可以看看执行[IntentService](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/IntentService.java),并用threadPool替换它('HandlerThread') 'Executors.newFixedThreadPool') – zapl

+0

这是个不错的主意我可能会尝试 – user3086577

相关问题