任何人都可以描述或指出我對「如何在Android中起作用」的一個很好的描述?你可以忘記它的Android標準文檔。WakeLock如何工作?對我來說它不起作用
我有一個服務(作爲前臺開始),並在服務中自己的線程將啓動。線程保持循環,直到用戶停止服務。在循環中,線程執行HTTP請求。從線程知道什麼延遲(1分鐘或更長)後,應該執行下一個HTTP請求。
當顯示器打開時,HTTP請求會在確切的預期時間內到達服務器。但是當顯示屏關閉時,延遲是隨機的。例如。事實上在2分21秒,4點04分,4點40分......的1分鐘的情況下......但是,在顯示器關閉的情況下(假設被稱爲深度睡眠模式),我還需要準確的時間。
於是我介紹了wakelock.acquire()
之前和wakelock.release
之後的HTTP請求,但是這個沒什麼變化。
但它給我的只是一般性的問題:
到底如何將我的代碼起牀做wakelock.acquire()
的時候,手機睡覺?如果我達到wakelock.acquire()
,那麼我不需要它,或...?
好吧然後我想,也許在深度睡眠我的代碼也執行,但某些事情如IP流量不是。但是,它應該工作。
從logcat日誌中我可以看到wakelock.acquire()
沒有及時調用。那麼它的用法是什麼?啓動服務或其線程時,我無法執行wakelock.acquire()
,因爲這意味着即使我只想在30分鐘內完成HTTP請求,我的服務也會阻止手機進入睡眠狀態。
我寧願不相信用wakelock.acquire()
你只能在整個生命週期內提供服務,防止手機進入深度睡眠狀態。
嘿,也許我完全錯了,並與wakelocks我只能防止手機深度睡眠,但我不能喚醒手機深度睡眠。 但是,這不正常的情況下,你需要喚醒手機一段時間做一些事情? 另一個問題是,爲什麼http請求在深度睡眠中完全執行。我的服務是否會獲得一些處理時間,因爲其他應用喚醒了手機?但是這個應用程序是如何做到的。我希望它也能做到這一點。 – valerian