2011-01-25 48 views
2

我的應用程序有一個創建3個併發線程的線程池。當我調用runnables時,它們被添加到我的線程池中。Android線程池在後臺狀態後沒有執行的情況下建立可運行的程序

我的問題發生在應用程序進入背景一段時間。最終,我的線程停止執行我的池中的可運行程序,並且池正在繼續增長。即使我將應用程序帶回前臺,我的線程也不會再開始運行。

我的理論是,當我的應用程序進入我的線程被殺死的背景。我不確定我是否確定我的線程是否被殺死,以便我可以再次啓動它們。

對於我可以查找以確定線程是否已被殺的任何建議,您有什麼建議嗎?

+0

當你說'線程池'你的意思是像一個ExecutorService? – 2011-01-25 16:38:31

+0

如果您需要線程在應用程序處於後臺運行時運行,並且沒有發生用戶交互,爲什麼不運行服務? – user432209 2011-01-25 16:58:19

回答

1

您不能使用線程池在後臺執行代碼,因爲Android活動生命週期不會認爲您的應用程序是活動的,並且最終會在您失去UI焦點後終止進程(包括所有線程)。你想要的是具有不同生命週期的Android Service。要做這樣的事情,我們使用帶有Handler和HandlerThread的本地服務,我們可以將Runnables發佈到。你可能會想要類似的東西。

注意:每次我這樣做,我都覺得必須有一個更簡單的方法,所以如果有人簡化了這種模式,可能值得搜索。

相關問題