簡體   English   中英

下載線程中的PARTIAL_WAKE_LOCK與SCREEN_DIM_WAKE_LOCK

[英]PARTIAL_WAKE_LOCK vs SCREEN_DIM_WAKE_LOCK in download thread

我有一個服務,它產生一個下載線程,有時下載大文件。 我意識到,一旦手機進入睡眠狀態,下載線程就會顯着減慢,然后停止。

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

然后我嘗試了screen_dim_wake_lock。 這一次,屏幕保持打開(變暗),下載保持全速,直到完成,喚醒鎖定,然后電話睡覺。

我的問題是,為什么我不能保持我的線程運行時,像在screen_dim_wake_lock期間一樣持有partial_wake_lock? 關於這兩者之間的區別是否存在一些無證的行為? 是因為我不是在UI線程上運行嗎?

編輯:

我添加了一個wifilock。 wifi沒有進入睡眠狀態,但我的線程仍然死亡。 如果某個其他進程喚醒系統,則下載將以正常速度繼續,然后再次減速。 如果我喚醒手機,它將以正常速度繼續,而不是在屏幕熄滅時再次減速。 似乎線程被系統推入后台。 我想知道我是否可以阻止這一點。

我有一個同樣的問題,一個服務不斷下載大量的URL。 最好的辦法是像你一樣使用screen_dim_wake_lock,把你的服務前台,描述在這里

通過這種方式,屏幕始終處於打開狀態,因此使用WI-FI界面也是如此。 相反,如果你讓手機閑置一段時間然后屏幕關閉,手機將進入睡眠模式,15分鍾后WIFI也將關閉!

所以,另一種方法是使用partial_wake_lock(只有CPU打開)並更改手機的設置,以便WIFI始終開啟(可能這看起來像你獲得的WIFI_LOCK ..):

  • 從主屏幕轉到系統或設置然后
  • 選擇無線和網絡
  • 選擇WI-FI設置
  • 按菜單,然后選擇高級
  • 按Wi-Fi睡眠政策並將其更改為從不

然后,即使在關閉屏幕的睡眠模式下,您的服務也能正常工作。 這里唯一的問題是:

如果你松散WIFI連接一段時間,那么Android可能會因為它不活動而終止你的服務..但是如果你的手機總是連接到WIFI網絡並且穩定性很好那么一切都會正常工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM