我正在使用Java executorservice在我的一個應用程序中創建超時效果。經過一段時間後,他們的執行者服務開始並將用戶從會話中註銷。但是在Android設備上,當設備進入睡眠狀態時,執行程序線程被暫停。設備喚醒後,線程未掛起。我希望更改執行程序正在使用的時鐘,以便在設備進入深度睡眠後繼續計數。有沒有辦法,我可以騎在哪個時鐘正在使用(我知道我可以換出整個實施和使用alarmmanager,但我不希望改變現有的代碼,所以請不要嘗試提供其他的API)。ExecutorService如何更改調度時鐘
我的問題是,儘管設備處於睡眠狀態,但必須有系統時鐘繼續運行,我怎樣才能讓executor scheduler使用該時鐘而不是現在使用的那個設備,它會尊重設備進入深度睡眠並暫停滴答?
我的代碼,我目前是非常簡單的,只是看起來像這樣:
myExecutorService.schedule(new EndUserSession(),
6L, TimeUnit.MINUTES);
上面這段代碼開始EndUserSession()在6分鐘。它可以工作,但我想使用另一個不考慮移動設備時間的時鐘。
您能解釋10L邏輯嗎?如果不清楚如何幫助。設備可以進入睡眠狀態,您的日程安排將凍結。當它被喚醒時,它仍然會繼續運行 – j2emanue
@ j2emanue這個想法是檢查會話是否每隔10秒過期一次。如果設備睡了一個小時,喚醒後10秒內任務會觸發。它會注意到到期時間已經過去並終止會話。然後它將取消預定的任務。 – AdamSkywalker