我想在android上編寫一些後臺服務,現在我已經創建了自己的線程池來處理它們。在意識到系統資源的Android中使用線程池
服務運行在可能在前臺有遊戲的機器上,我希望遊戲優先於系統資源。
有沒有辦法讓線程池意識到系統的閒置資源,並且只使用當時免費的東西?
我想在android上編寫一些後臺服務,現在我已經創建了自己的線程池來處理它們。在意識到系統資源的Android中使用線程池
服務運行在可能在前臺有遊戲的機器上,我希望遊戲優先於系統資源。
有沒有辦法讓線程池意識到系統的閒置資源,並且只使用當時免費的東西?
我建議做
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
中的所有線程
在池中啓動。這將控制線程的Linux優先級。查看http://developer.android.com/reference/android/os/Process.html#setThreadPriority(int)獲取可用常量列表。
基本上,int
的值範圍從-20(非常緊急)到20(最小)。
THREAD_PRIORITY_BACKGROUND
是10THREAD_PRIORITY_LOWEST
(19)的文檔:「最低可用線程的優先級只爲那些誰真的,真的不希望,如果別的是發生在運行「默認情況下在服務中執行的線程將在後臺執行。如果系統開始資源不足,操作系統將關閉服務。
爲了簡單起見,您可以使用AsyncTask來運行您的線程,AsyncTask使用線程池,因此啓動線程的成本很便宜,請注意,默認情況下它們將以串行方式運行。
非常好。謝謝你,先生。 – 2014-12-19 15:07:29