2014-01-14 102 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

相關問題