zoukankan      html  css  js  c++  java
  • android 电源管理:自动休眠

    frameworks/base/services/java/com/android/server/PowerManagerService.java

    0.
    当没有外部事件时,过了一段时间小机会自动进入熄屏或休眠。所以只要有用户操作屏幕和键盘等事件,就要重新设定自动休眠的定时器。
    frameworks\base \services\java\com\android\server\WindowManagerService.java
    WindowManagerService会把用户的点击屏幕,按键等作为user activity事件来调用userActivity函数.

    1. userActivity()

    userActivity()根据当前状态决定要如何处理,如:
    a. 如果之前屏幕是暗的,则可能需要亮屏; 如果只按了音量键BUTTON, 则不需要亮屏。
    b. 要重新设置进入熄屏(SCREEN_DIM)或休眠(SCREEN_OFF)的超时时间

    2. setTimeoutLocked(long now, final long originalTimeoutOverride, int nextState)

    setTimeoutLocked()计算下一个状态nextState的超时时间when,使用TimeoutTask在when时间到达时执行TimeoutTask.
    originalTimeoutOverride参数用于指定SCREEN_OFF的时间,若为-1则使用每个状态的默认超时时间。

    3. TimeoutTask

    TimeoutTask首先调用setPowerState()设置当前系统电源状态,然后根据刚刚设置的状态来计算下一个状态,状态变化过程为:
    SCREEN_BRIGHT -> SCREEN_DIM -> SCREEN_OFF
    最后使用定时器setTimeoutLocked来定时进入下一个状态。

    4. setPowerState()

    调整背光亮度,设置系统状态(休眠/唤醒)

    setScreenStateLocked() -> Power.setScreenState() 写 /sys/power/state, 休眠,唤醒


  • 相关阅读:
    辗转相除法
    并查集(详)
    LCA 最近公共祖先
    RMQ ST表 静态区间最大值
    manacher
    题解 CF33B String Problem
    Linux 下对拍程序
    CSP 考试注意事项
    题解 P4688 [Ynoi2016]掉进兔子洞
    CSP 2020 游记
  • 原文地址:https://www.cnblogs.com/sammei/p/3295615.html
Copyright © 2011-2022 走看看