2011-09-13 53 views
4

我正在考慮爲Android實施over-Bluetooth視頻流服務。高優先級Android服務

我怎樣才能確保:

  • 運行服務具有高優先級?我想盡量減少延遲。
  • 當內存緊張時,服務內容不足以殺死內存?

回答

8

有你需要做的,以確保您的服務保持運行兩個重要的事情:

  1. ,請務必讓startService(),而不是(或除了)結合。這將確保服務繼續運行,即使創建它的Activity被終止。

  2. 使用startForegroud()在前臺運行服務,以便在需要內存時Android不會回收它。它要求您還創建一個Notification,該服務在服務實際啓動時發佈,並在通知區域放置一個圖標,並讓用戶知道您的服務仍在運行。

欲瞭解更多信息:

http://developer.android.com/reference/android/app/Service.html http://developer.android.com/guide/topics/fundamentals/bound-services.html

0

如果你是/是在同樣的情況作爲我來說,被迫使用bindService(),該解決方案是設置

Context.BIND_IMPORTANT

該呼叫中的標誌。這將服務的優先級提高到綁定應用程序的優先級,如果它是前臺應用程序,則可能是最高的。如果您不使用該標誌,則該服務需要與所有其他後臺服務戰鬥超過10%的資源。 (另外90%是爲前臺應用程序保留的)。

請注意,手動設置服務的線程優先級,在bindService()期間不設置此標誌,沒有區別。