android 5.1 非STR待机流程

2023-11-04

android在长按Power键(手机或pad)或按下电源键(电视)会进入待机状态,下面分析一下非STR待机流程。

待机分STR和非STR待机。

STR待机是为了实现快速开关机,提高开机速度。android自身支持STR,OEM可以根据自身需要进行深度定制。STR待机时,PM芯片仍然供电,其他断电,当STR开机时,从PM芯片唤醒,回复到STR待机前状态,从而提高开机速度。

非STR待机即正常待机,待机后会彻底断电,这里只分析android层的行为。

1 PhoneWindowManager处理逻辑

按键在给到WindowManagerService之前,会先给到PhoneWindowManager进行处理。
 /** {@inheritDoc} */
    @Override
    public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
    //KeyEvent入队
    ...
     case KeyEvent.KEYCODE_POWER: {
	Log.d(TAG,"KEYCODE_POWER.....");
         result &= ~ACTION_PASS_TO_USER;
         isWakeKey = false; // wake-up will be handled separately
          if (down) {
               interceptPowerKeyDown(event, interactive);
           } else {
               interceptPowerKeyUp(event, interactive, canceled);
            }
           break;
在key Down时,执行interceptPowerKeyDown逻辑,这段逻辑会处理正常待机流程。
在key Up时,执行interceptPowerKeyUp逻辑,这段逻辑出来STR待机流程。
  private void interceptPowerKeyDown(KeyEvent event, boolean interactive) {
        // Hold a wake lock until the power key is released.
        if (!mPowerKeyWakeLock.isHeld()) {
            //获取wakeLock
            mPowerKeyWakeLock.acquire();
        }
     ...
     // Latch power key state to detect screenshot chord.
        if (interactive && !mScreenshotChordPowerKeyTriggered
                && (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) {
            mScreenshotChordPowerKeyTriggered = true;
            mScreenshotChordPowerKeyTime = event.getDownTime();
            //截图,STR和非STR待机都会执行截图,截图为了在待机时画面看起来很和谐
            interceptScreenshotChord();
        }
     ...
      // When interactive, we're already awake.
                // Wait for a long press or for the button to be released to decide what to do.
                if (hasLongPressOnPowerBehavior()) {  //如果不是LONG_PRESS_POWER_NOTHING
                    if (enable_str == false) {  //非STR
                        if (mShortPressOnPowerBehavior < 0) {  //如果等于0,重新赋值
                            mShortPressOnPowerBehavior = mContext.getResources().getInteger(
                                    com.android.internal.R.integer.config_shortPressOnPowerBehavior);
                        }
                       //发送MSG_POWER_LONG_PRESS,处理待机事件
                        Message msg = mHandler.obtainMessage(MSG_POWER_LONG_PRESS);
                        msg.setAsynchronous(true);
                        //是否延迟待机
                        mHandler.sendMessageDelayed(msg,
                                (mShortPressOnPowerBehavior == SHORT_PRESS_POWER_SHUT_DOWN) ?
                                0 : ViewConfiguration.get(mContext).getDeviceGlobalActionKeyTimeout());
                    }
config_shortPressOnPowerBehavior默认值是1,在frameworks\base\core\res\res\values\config.xml中有定义:
    <!-- Control the behavior when the user short presses the power button.
            0 - Nothing
            1 - Go to sleep (doze)
            2 - Really go to sleep (don't doze)
            3 - Really go to sl
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android 5.1 非STR待机流程 的相关文章

  • 结构体内存对齐及结构体大小计算,位域计算

    1 什么是结构体内存对齐 结构体内存对齐是指在编程语言中 为了提高内存访问效率和性能 将结构体的成员按照特定规则进行排列 保证每个成员在内存中的起始地址符合特定的对齐要求 2 为什么要结构体内存对齐 网上的文章都是说这两个原因 1 平台原因
  • C++——指针作为参数传递

    C 指针作为参数传递 在写这一篇之前 受到了两个博主两篇博文 博文1 博文2 的启发 对指针作为参数传递时 有了很大的启发 所以在看完之后并把自己的感悟写出来 对于指针的变化作了更详细的讲解 1 指针作为参数传递时 是值传递不是引用传递 2
  • 设置ipv4固定ip

    选择 打开 网络和Intemet 设置 点击进入之后 选择 更改适配器选项 选择需要设置的网络 右击选择 属性 选择 Interent协议版本4 TCP IPv4 选择 属性 cmd输入ipconfig查看当前的IP信息 选择 使用下面IP
  • shinblink HX711称重/形变/压力测量

    HX711称重 形变 压力测量 一 本例程实现功能 二 基本概念 三 接线图 五 完整代码 六 代码运行结果 一 本例程实现功能 Core通过HX711差分电压采集模块测量电桥式传感器输出的差分电压AD值 并通过print 函数在电脑串口调
  • SQLi LABS Less 26a 联合注入+布尔盲注

    第26a关是单引号 括号的字符型注入 后台过滤了关键字 and or 注释 空格 这篇文章提供联合注入 布尔盲注 两种解题方式 SQLi LABS其他关卡可以参考 SQLi LABS 靶场通关教程 一 功能分析 这关是一个查询功能 地址栏输
  • 多播路由技术

    什么是多播转发树 用图论术语描述从特定源节点到多播组的所有成员的一组路径 这些路径定义了图论中的树 tree 是不含任何回路的图 即一个路由器不会在一条路径上出现两次或两次以上 有时也称为转发树 每个多播路由器对应于树中的一个结点 连接两个
  • LeetCode 1603. 设计停车系统

    题目链接 1603 设计停车系统 class ParkingSystem public vector
  • 九、UI系统

    目录 血条 Health Bar 的预制设计 设计过程 1 使用 IMGUI 2 使用 UGUI 两种实现的优缺点 IMGUI UGUI 效果展示 血条 Health Bar 的预制设计 血条 Health Bar 的预制设计 具体要求如下
  • Azure RTOS定价(ThreadX 等)

    Azure RTOS定价 Azure RTOS定价 https azure microsoft com zh cn pricing details rtos 使嵌入式 IoT 开发和连接变得轻松 Azure RTOS 是一种易于使用 经过市
  • 史上最简单详细的Hadoop完全分布式集群搭建

    一 安装虚拟机环境 Vmware12中文官方版 链接 https pan baidu com s 1IGKVfaOtcFMFXNLHUQp41w 提取码 6rep 激活秘钥 MA491 6NL5Q AZAM0 ZH0N2 AAJ5A 这个安
  • Kettle实例-数据检验-数据规范化处理

    1 使用Kettle工具 创建一个转换data validation 并添加 自定义常量数据 控件 计算器 控件 数据检验 控件 空操作 控件以及Hop跳连接线 2 双击 自定义常量数据 控件 进入 自定义常量数据 界面配置实验用数据 单击
  • Ubuntu-安装JDK

    1 检查安装JDK没有 java version 如果你看到像下面的输出 这就意味着你并没有安装过Java The program java can be found in the following packages default jr
  • centos7开启ssh 22端口

    查看是否安装ssh rpm qa grep ssh yum install openssh server 安装ssh 开启ssh service sshd start netstat ntpl grep 22 查看端口是否打开 设置自动开启
  • CSS样式--盒模型(四)

    CSS样式 盒模型 四 前言 css盒模型是创建css布局基础 其中最主要的就是padding和margin了 盒模型图解如下 可通过谷歌浏览器的调试工具查看元素的盒模型 鼠标悬浮上去可查看对应的padding border等值 框属性 1
  • 质数判断程序

    include
  • Spring Framework研究(一)RESTFUL

    前言 参考文档 Spring Framework Reference Documentation http docs spring io spring docs 3 2 x spring framework reference html s
  • 【漏洞复现】通达OA前台任意用户登录漏洞

    漏洞简介 通达OA Office Anywhere网络智能办公系统 是中国通达公司的一套协同办公自动化软件 通达OA lt 11 5 200417存在一个认证绕过漏洞 利用该漏洞可以实现任意用户登录 攻击者可以通过构造恶意攻击代码 成功登录
  • vs2017无法打开“stdio.h”等源文件!

    因为系统重装了 vs不得不重新安装 不得不说简直就是残忍啊 最后差点砸电脑 心态都崩了 一个简单的helloworld 保留四百多个错误 简直就是残忍 网上找了很多教程 都是单独下载 然后配置环境什么的 越看越懵越看越不知道问题出在哪里 先

随机推荐

  • 进公司能不能转正,简单,就看能不能做事

    前几天听同事 他是应用组领导 讲到看一个人在工作上行不行 很简单 就看他能不能做事 感受 在换工作后 进入新公司 领导会给你任务 当然这得碰运气 运气好或许遇到的任务简单 或许是你以前做过的 很快就做完了 这样 你在3个月内也做不少事 而且
  • 面向对象的封装和继承

    封装 封装的概念 将类的某些信息隐藏在类内部 不允许外部程序直接访问 而是通过该类提供的方法来实现对隐藏信息的操作和访问 把尽可能多的东西藏起来 对外提供便捷的接口 封装的作用 便于使用者正确使用系统 防止错误修改属性 有助于系统之间的松耦
  • vue封装自己的组件库 02.封装dialog组件

    link https blog csdn net weixiaowei 2016 article details 104702793 四 封装一个element ui风格的dialog组件 前置知识 vue过渡动画 sync修饰符 具名插槽
  • linux集群高可用--crm

    一 高可用集群介绍 入门 http blog csdn net tjiyu article details 52643096 高可用集群的概念 非常重要 需要重点理解 什么是高可用集群 高可用集群 High Availability Clu
  • PCIE金手指各个引脚的定义及设计建议,避免入坑!

    最近在做一个PCIE转网口的项目 具体框图如下 SOC这边的板子是我们自己开发的 但是无法满足输出四个网口的需求 就想到了用PCIE2 0进行转接 右侧的网口扩展板是外购的 刚好满足PCIE2 0接口 并输出四路网口 于是采用了此架构进行设
  • 嵌入式相关开源项目、库、资料

    学习初期最难找的就是找学习资料了 本文精心汇总了一些嵌入式相关资源 包括但不限于编程语言 单片机 开源项目 物联网 操作系统 Linux 计算机等资源 并且在不断地更新中 致力于打造全网最全的嵌入式资料库 以下为最新资料汇总 github
  • 网页自动点击系统 (自动签到)

    Selenium是一个用于Web应用程序测试的工具 Selenium测试直接运行在浏览器中 就像真正的用户在操作一样 支持的浏览器包括IE 7 8 9 10 11 Mozilla Firefox Safari Google Chrome O
  • YOLOv3计算模型的mAP

    一 先测试一下大神的数据 在这里下载 https github com Cartucho mAP 1 解压之后如下图所示 input文件夹里面放的是测试集的ground truth 模型的测试结果 和测试集 scripts文件夹里面放的是一
  • 关于数据库的总结

    1 SQL MySQL SQLite简介 SQL 发音为字母S Q L或sequel 是结构化查询语言 Structured Query Language 的缩写 SQL是一种专门用来与数据库通信的语言 数据的所有存储 检索 管理和处理实际
  • 信息安全建设之安全平台搭建

    我们在进行网络安全层面体系建设的时候 需要涉及到很多安全产品 UTM 统一威胁管理 称为集成威胁管理 是安全措施之一 我们的目标是通过整合从而实现高效运营 而不是威胁组织网络的各种风险和管理设备 它不仅仅是针对外部组织的病毒防护和各种不断演
  • 【排序算法】插入排序(C语言)

    排序算法 插入排序 目录 一 插入排序的基本思想 二 插入排序的单趟排序 1 直接插入排序 2 二分法插入排序 三 插入排序的特点和效率 1 插入排序的特点 2 插入排序的效率 一 插入排序的基本思想 直接插入排序是一种简单的插入排序法 对
  • MAGMA

    LAPACK GPU MAGMA 使用gotoblas2 CUDA安装magma1 1 0 227 准备阶段 1 安装CUDA 2安装cpu BLAS 3安装LAPACK 安装过程 1 按照README文档进行安装 2 在make inc
  • 一份超详细的SpringMVC4常用知识清单!

    文章目录 1 SpringMVC 概述 2 使用 RequestMapping 映射请求 2 1 映射请求参数 请求方法或请求头 2 2 Maping支持通配符 3 PathVariable 映射 URL 绑定的占位符 4 REST 5 请
  • SVN查看文件的修改记录

    命令查看某个文件的修改历史 修改完某个文件后 要看改动的话使用如下命令 svn diff xxx xxx xx m svn diff 文件路径 如果要查看某次历史的提交的所有修改记录的话使用如下命令 svn diff c r12347
  • 基本类型题小结

    1 java基本数据类型 答 byte short int long float double char boolean 2 java数组声明方式 答 第一种方式 int a1 new int 1 2 3 直接声明并赋值 直接声明赋值数组是
  • python读取excel文件的单元格内容,去掉内容前个text

    打印的内容前有个text 对应的代码为 这个表示的是它内容的属性 加入你print的这个对象叫cell a 解决方法 可直接取中间的元素 cell a value就可以了 结果呈现
  • 【云原生之kubernetes实战】在k8s环境下部署OneNav个人书签工具

    云原生之kubernetes实战 在k8s环境下部署OneNav个人书签工具 一 OneNav介绍 1 OneNav简介 2 OneNav特点 二 检查本地k8s环境 1 检查工作节点状态 2 检查系统pod状态 三 docker部署One
  • 小朋友崇拜圈

    9 3 4 2 5 3 8 4 6 9 4 include
  • [SQL

    目录 一 环境安装 二 环境配置 三 编写程序 一 环境安装 1 PostgreSQL10 23 X64 应该哪个版本都行 1 由于使用 EXEC SQL 这种嵌入方式已经非常古老 近些年的Mysql和SQL Server都已经不支持这种嵌
  • android 5.1 非STR待机流程

    android在长按Power键 手机或pad 或按下电源键 电视 会进入待机状态 下面分析一下非STR待机流程 待机分STR和非STR待机 STR待机是为了实现快速开关机 提高开机速度 android自身支持STR OEM可以根据自身需要