場合によっては大きなファイルをダウンロードするダウンロード スレッドを生成するサービスがあります。電話がスリープ状態になるとすぐに、ダウンロード スレッドが大幅に遅くなり、停止することに気付きました。
明白な救済策、ウェイクロック。したがって、CPUがダウンロードを処理し続けるためだけに、partial_wake_lockを取得しても問題ないと思います。ただし、それは機能しません。同じ動作で、ダウンロードが遅くなり、画面がオフになると停止します。
次に、screen_dim_wake_lock を試しました。今回は、画面が点灯したまま (淡色表示) になり、ダウンロードが完了するまでフルスピードで実行され、ウェイクロックが解除され、電話がスリープ状態になりました。
私の質問は、partial_wake_lock を保持しているときに、screen_dim_wake_lock 中と同じようにスレッドを実行し続けることができないのはなぜですか? これら2つの違いについて、文書化されていない動作はありますか? おそらくUIスレッドで実行していないからですか?
編集:
Wi-Fiロックを追加しました。Wi-Fi はスリープ状態になりませんが、私のスレッドはまだ死んでいます。他のプロセスがシステムをウェイクアップすると、ダウンロードは通常の速度で続行され、その後再び遅くなります。電話を起動すると、通常の速度で続行し、画面が消えると再び速度が低下します. スレッドがシステムによってバックグラウンドにプッシュされているようです。それを防げるかどうかだと思います。