2014-12-18 65 views
0

我想在android上編寫一些後臺服務,現在我已經創建了自己的線程池來處理它們。在意識到系統資源的Android中使用線程池

服務運行在可能在前臺有遊戲的機器上,我希望遊戲優先於系統資源。

有沒有辦法讓線程池意識到系統的閒置資源,並且只使用當時免費的東西?

回答

0

我建議做

Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); 
中的所有線程

在池中啓動。這將控制線程的Linux優先級。查看http://developer.android.com/reference/android/os/Process.html#setThreadPriority(int)獲取可用常量列表。

基本上,int的值範圍從-20(非常緊急)到20(最小)。

  • 建議的THREAD_PRIORITY_BACKGROUND是10
  • 在約不斷THREAD_PRIORITY_LOWEST(19)的文檔:「最低可用線程的優先級只爲那些誰真的,真的不希望,如果別的是發生在運行
+0

非常好。謝謝你,先生。 – 2014-12-19 15:07:29

0

默認情況下在服務中執行的線程將在後臺執行。如果系統開始資源不足,操作系統將關閉服務。

爲了簡單起見,您可以使用AsyncTask來運行您的線程,AsyncTask使用線程池,因此啓動線程的成本很便宜,請注意,默認情況下它們將以串行方式運行。