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


  • 相关阅读:
    鬼谷子 简单飞扬
    JavaScript 随笔汇集 简单飞扬
    p2p学习 简单飞扬
    p2p知识 简单飞扬
    使用 JFreeChart来创建基于web的图表 简单飞扬
    Javascript中最常用的55个经典技巧 简单飞扬
    庆祝在博客园申请博客成功
    读《WCF技术剖析》(卷一)笔记(一)
    常用字符串截取类
    创建yum本地源 转帖
  • 原文地址:https://www.cnblogs.com/sammei/p/3295615.html
Copyright © 2011-2022 走看看