2011-03-03 31 views
7

我有一個服務,產生一個下載線程,有時會下載大文件。我意識到只要手機進入睡眠狀態,下載線程就會顯着減慢,然後停止。PARTIAL_WAKE_LOCK vs SCREEN_DIM_WAKE_LOCK在下載線程

明顯的補救措施,一個喚醒鎖。所以我會認爲可以獲得partial_wake_lock,只是爲了讓CPU處理下載。這雖然不起作用,但同樣的行爲,下載速度減慢,然後在屏幕關閉時停止。

然後我嘗試了一個screen_dim_wake_lock。這一次,屏幕保持(變暗),並且下載保持全速運行,直到完成,wakelock釋放,然後睡眠。

我的問題是,爲什麼我不能讓我的線程保持partial_wake_lock的狀態,就像在screen_dim_wake_lock中一樣?有沒有關於這兩個差異的無證行爲?是否因爲我沒有在UI線程上運行?

編輯:

我添加了一個wifilock。 wifi不睡覺,但我的線程仍然死亡。如果其他進程喚醒系統,則下載將以正常速度繼續,然後再次減速。如果我喚醒手機,它將以正常速度繼續,而不會在屏幕熄滅時再次減速。看起來線程正在被系統推入後臺。我想知道我能否防止這種情況發生。

+0

這種隨時隨地獲取?除非我使用SCREEN_DIM_WAKE_LOCK,否則我遇到的問題與網絡有關。部分喚醒鎖只是不夠的 - 當與WifiLock結合... – barkside 2013-03-21 09:28:35

回答

1

我與您有同樣的問題,一個服務可以連續下載大量的URL集合 。最好的方法是像你所做的那樣使用screen_dim_wake_lock,並將作爲here的前臺服務。

以這種方式,屏幕始終打開,因此,您的WI-FI界面也會發生同樣的情況。相反,如果您將手機閒置一段時間,屏幕將關閉,手機將進入睡眠模式,15分鐘後WIFI也將關閉!

那麼,另一種方法是使用一個partial_wake_lock(僅CPU爲上),並更改手機的設置,以便爲WIFI是始終打開(也許這好像你取得WIFI_LOCK ..):

  • 從主屏幕進入系統或設置,然後
  • 選擇無線網絡&
  • 選擇Wi-Fi設置
  • 按菜單,選擇高級
  • 按W我-Fi休眠政策,更改爲決不

那麼你的服務將工作,即使在睡眠模式下,屏幕關閉。這裏唯一的問題是:

如果您在一段時間內無法使用WIFI連接,那麼Android可能會因您的服務無效而終止您的服務。但是,如果您的手機始終以良好的穩定性連接到WIFI網絡,精細!

+0

+1你的答案幫助了我,謝謝 – Ahmed 2012-11-26 00:04:45