How can I see which wakelocks are active

前端 未结 8 2129
时光说笑
时光说笑 2020-12-12 16:02

For some reason my Android phone won\'t go to sleep. I assume that a wakelock is keeping it awake, but there is no way to tell which wakelocks are active. The running servic

相关标签:
8条回答
  • 2020-12-12 16:08

    Does Android definitely release wakelocks when a process ends?

    I doubt it, though I do not know for certain.

    Is it possible an app was badly written and didn't release a wakelock before exiting?

    AFAIK, yes.

    Is there any way to see the active wakelocks?

    Run adb shell dumpsys power.

    0 讨论(0)
  • 2020-12-12 16:13

    For what it's worth, on Android 7.1.1 this is exactly what I was looking for:

    greatqlte:/ $ dumpsys power | grep WAKE_LOCK
      PARTIAL_WAKE_LOCK              'ES Wake Lock' ACQ=-38m52s804ms LONG (uid=10275 pid=12504)                                                                                                 
      PARTIAL_WAKE_LOCK              '*net_scheduler*' ACQ=-40ms (uid=10031 pid=3026 ws=Work Source{10031 com.google.android.gms})                                                               
    
    0 讨论(0)
  • 2020-12-12 16:19

    You can use below adb command to require a wake lock

      adb shell "echo mylock > /sys/power/wake_lock"
    

    Then, you can use below command to watch if this lock is active. You will see the time column continuously change, it means the wake lock is active

      watch -n 1 'adb shell "cat /proc/wakelocks" | grep mylock'
    

    Now, use this adb command to release the wake lock

      adb shell "echo mylock > /sys/power/wake_unlock"
    

    Then, check it again, the time column will freeze, it means the wake lock is non active

      watch -n 1 'adb shell "cat /proc/wakelocks" | grep mylock'
    

    You can use the same technique to observe the wake lock you acquire in the code.

    0 讨论(0)
  • 2020-12-12 16:24

    Android does not release wakelocks when the process ends. It should be explicitly released by the process before ending.

    0 讨论(0)
  • 2020-12-12 16:26

    In new versions of Android you can see list of wakelocks here:

    adb shell "cat /sys/kernel/debug/wakeup_sources"
    
    0 讨论(0)
  • 2020-12-12 16:26

    As others have already said, adb shell dumpsys power can show you active wakelocks.

    However, for apps that didn't release wakelock, as per the answer here: https://stackoverflow.com/a/16258624/428271 It should be released by Android. However, it is for case where app/process is killed, but it should be applicable when app/process is complete too. It also provides the source code references rather than just saying 'checked in code'

    0 讨论(0)
提交回复
热议问题