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

标签 java android multithreading

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

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

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

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

我不知道如果可能的话,使用具有多个线程的 Service 或两个 IntentService 是否会更好?

最佳答案

我会使用可以将任务分发到线程池的Service(工作方式与IntentService类似,但不是子类)。

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

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

关于java - Android - 我应该在程序中使用 IntentService 还是 ThreadPool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21119629/

相关文章:

android - 无法在 JNI 中分离头文件和源文件

java - RxJava 和 Android 上的随机零星事件

ios - iOS Moya Web服务: make one call wait for all others to finish,然后阻止新调用

java - 如何在 Java 中识别监视器锁的所有者

java - 使用 log4j2 和 logback

java - JFormattedTextField 问题

Android USB 主机 - bulkTransfer() 正在丢失数据

java - IlleagalMonitorStateException 当我试图运行这个程序时

java - 外键作为 OpenJPA 中复合主键和 ManyToOne 关系的一部分

java - GCMRegistrar jar 在 eclipse 中导致错误,未找到源。档位调试