Android - 我应该在程序中使用IntentService还是ThreadPool?

时间:2014-01-14 17:12:35

标签: java android multithreading

我的程序将搜索文件系统,所以我知道我需要Service或IntentService,但我不确定是哪一个。 (以前我想使用AsyncTask,但这不合适)

我知道IntentService会一次运行一个线程,实际上这可能是我想要的但不确定

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

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

我不知道使用多个线程的服务或两个IntentServices是否更好,如果可能的话?

1 个答案:

答案 0 :(得分:1)

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

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

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