美文网首页
Android P 电源管理(4)待机流程

Android P 电源管理(4)待机流程

作者: 阿拉贡居民 | 来源:发表于2021-02-04 21:31 被阅读0次

    电视遥控器,短端走待机(str待机)流程, 长按是关机,走关机流程,记录下待机流程。

    参考博客

    1. https://blog.csdn.net/andyhuabing/article/details/49638899
    2. https://blog.csdn.net/lezhang123/article/details/81273952/
    3. https://blog.csdn.net/yipie/article/details/8006574

    待机流程

    Android P引入自动待机功能,只有存在WakeLock,wakeup_count就不会为0,每次acquire wake_lock会让wakeup_count加1,而release wake_lock会让wakeup_count减1,当wakeup_count为0则autosuspend会重新待机下去
    相关代码
    frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
    hardware/interfaces/power/1.0/default/Power.cpp
    hardware/realtek/power/power.cpp
    hardware/realtek/power/power.cpp
    代码流程
    goToSleepInternal()
    -->goToSleepNoUpdateLocked()
    -->setWakefulnessLocked(WAKEFULNESS_DOZING);
    updatePowerStateLocked()
    --> updateDisplayPowerStateLocked() //关闭屏幕
    --> updateDreamLocked() //更新屏保状态
    --> finishWakefulnessChangeIfNeededLocked()
    -->mNotifier.onWakefulnessChangeFinished() //通知AMS, WMS系统状态改变。
    --> updateSuspendBlockerLocked()

    reallyGoToSleepNoUpdateLocked() //更新屏保状态,发现是DOZE状态后,会调用这个接口。
    --> setWakefulnessLocked(WAKEFULNESS_ASLEEP)
    updatePowerStateLocked()
    --> updateDisplayPowerStateLocked()
    --> updateDreamLocked()
    --> finishWakefulnessChangeIfNeededLocked()
    -->mNotifier.onWakefulnessChangeFinished() //通知AMS, WMS系统状态改变。
    --> updateSuspendBlockerLocked() //释放系统锁,进入待机。
    -->setHalAutoSuspendModeLocked()

    android p待机流程.png

    待机唤醒

    唤醒支持不同的唤醒源,网络待机唤醒,Power按键唤醒,CEC唤醒等,部分流程有抽象和实际可能会有差异。


    android p唤醒.png

    待机时候应用处理

    蓝牙,WiFi,媒体中心等模块在待机的时候,如果需要释放资源,可以先获取并持有wakelock,等释放完资源后在释放wakelock。

    相关文章

      网友评论

          本文标题:Android P 电源管理(4)待机流程

          本文链接:https://www.haomeiwen.com/subject/tgquzktx.html