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, 休眠,唤醒


  • 相关阅读:
    CSS
    171 Excel Sheet Column Number
    设计模式之组合模式
    设计模式之外观模式
    设计模式之装饰者模式
    设计模式之抽象工厂
    设计模式之工厂方法
    23种设计模式和7大原则-开篇
    设计模式之简单工厂
    每天一个Linux命令:locate(19)
  • 原文地址:https://www.cnblogs.com/sammei/p/3295615.html
Copyright © 2011-2022 走看看