簡體   English   中英

使用WakeLock時,屏幕打開然后關閉的速度過快(幾秒鍾沒有打開)

[英]Screen on and then off too fast when using WakeLock (not remaining on for a few second)

我在通過PowerManager API使用喚醒鎖時遇到問題。 目前,我有一個服務和一個廣播接收器。

我的服務有2個主要角色:

  • 首先,它在特定時間創建一個警報(我的接收器從系統接收到啟動完成的意圖,並啟動服務以創建下一個警報)
  • 第二個,接收器對警報做出反應(在RTC_WAKEUP模式下),並通過打開屏幕來啟動服務以播放通知。

我正在使用Mark murphy的cwac-wakeful模塊來實現這一點,並且效果很好。

問題是:屏幕打開和關閉的速度太快,用戶看不到它。

這是啟動警報意圖時發生的情況(針對第二個角色/情況):

  • 調用廣播接收器的OnReceive方法
  • 它調用WakefulIntentService.sendWakefulWork
  • 我的喚醒鎖已獲取(帶有SCREEN_DIM_WAKE_LOCK | ACQUIRE_CAUSES_WAKEUP | ON_AFTER_RELEASE標志)
  • 屏幕已開啟
  • 服務啟動:創建並顯示通知
  • 服務完成
  • 喚醒鎖被釋放
  • 屏幕立即關閉(放開幾秒鍾后不打開)

如您所了解。 問題是,服務完成后,鎖釋放得太快,因此我只能在不到一秒鍾的時間內看到屏幕打開和關閉的情況。 我以為使用ON_AFTER_RELEASE(文檔說:“如果設置了此標志,則釋放WakeLock時將重置用戶活動計時器,從而使照明保持更長的時間。如果您需要在喚醒鎖定條件之間循環。“)可以解決我的問題,但沒有。

谷歌搜索時,我發現了一個解決方案,其中包括:

  • 在服務完成后不立即釋放喚醒鎖,而是在接下來的15/20秒(從服務完成時開始)發出另一個警報,該警報將(通過接收器/服務)釋放喚醒鎖並關閉屏幕。 我不知道這是否是一個好的解決方案,對於這個用例來說,這對我來說似乎很復雜

然后我的問題是,如何像接收短信時那樣將屏幕保持開啟狀態幾秒鍾(例如10/15秒),實現此目的的最佳解決方案是什么?

任何幫助將不勝感激,並預先感謝!

我遇到類似的情況,因為我釋放WakeLock后立即關閉了應用程序。 我想我對它應用了與您相同的邏輯,但是我將FULL_WAKE_LOCK與其他選項PowerManager.ACQUIRE_CAUSES_WAKEUP |一起使用。 PowerManager.ON_AFTER_RELEASE。 在我的“ GameTime”計時器應用程序中,這似乎對我有用。 我知道這是前一段時間發布的,但也許會對某人提供一些幫助!

API文檔中有一行指出:“此外,您還可以添加兩個標志,這些標志僅影響屏幕的行為。與PARTIAL_WAKE_LOCK結合使用時,這些標志無效。” 我想知道SCREEN_DIM_WAKE_LOCK是否算作部分喚醒? (未記錄的“功能”)

API位於: http : //developer.android.com/reference/android/os/PowerManager.html

我認為您提供了答案:

  1. 不要釋放喚醒鎖
  2. 設置新警報在10/15秒后發生
  3. 觸發第二個警報時釋放喚醒鎖

暫無
暫無

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

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