我的程序将搜索文件系统,所以我知道我需要 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/