锁屏界面十秒超时

/frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.java

handleNotObscuredLocked { mUserActivityTimeout = w.mAttrs.userActivityTimeout;}

->

SystemUI

KeyguardViewMediator.AWAKE_INTERVAL_DEFAULT_MS = 10000;

StatusBarWindowController.applyUserActivityTimeout

{

mLpChanged.userActivityTimeout = KeyguardViewMediator.AWAKE_INTERVAL_DEFAULT_MS;

}

//

RootWindowContainer.performSurfacePlacement

-->RootWindowContainer.performSurfacePlacementNoTrace

->H.SET_USER_ACTIVITY_TIMEOUT

->PowerManagerService.setUserActivityTimeoutOverrideFromWindowManager

-->PowerManagerService.setUserActivityTimeoutOverrideFromWindowManagerInternal{mUserActivityTimeoutOverrideFromWindowManager = timeoutMillis;}

-->PowerManagerService.getScreenOffTimeoutLocked

{

if (mUserActivityTimeoutOverrideFromWindowManager >= 0) {

timeout = Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager);

}

//getScreenOffTimeoutLocked timeout=10000 mUserActivityTimeoutOverrideFromWindowManager=10000 sleepTimeout=-1

return Math.max(timeout, mMinimumScreenOffTimeoutConfig);

}

Keyguard Exit相关流程

adb shell dumpsys activity log x on

adb shell dumpsys window -d enable a

adb shell dumpsys window -d enable DEBUG_SCREEN_ON

adb shell dumpsys window -d enable DEBUG_KEYGUARD

adb logcat |grep -Ei "WindowManager|Waking up|keyguardGoingAway|StartKeyguardExitAnimation|screen on|Setting power mode|write_int"

03-24 17:40:05.973 1309 7714 D KeyguardViewMediator: onStartedWakingUp, seq = 1190

03-24 17:40:06.019 1309 1309 D KeyguardViewMediator: keyguardGoingAway

03-24 17:40:06.217 937 2664 I WindowManager: Relayout Window{bfff242 u0 com.xxxx.Launcher/com.android.launcher3.Launcher}: oldVis=4 newVis=0 focusMayChange = true

03-24 17:40:06.302 937 1049 D WindowManager: Starting keyguard exit animation

03-24 17:40:06.302 937 1049 D WindowManager: PWM.startKeyguardExitAnimation

03-24 17:40:06.320 1309 1309 D KeyguardViewMediator: handleStartKeyguardExitAnimation startTime=167302355 fadeoutDuration=0

03-24 17:40:06.352 937 1046 I WindowManager: Waiting for drawn Window{8fd0658 u0 StatusBar}: removed=false visible=true mHasSurface=true drawState=1

03-24 17:40:06.585 937 5600 I WindowManager: Waiting for drawn Window{8fd0658 u0 StatusBar}: removed=false visible=true mHasSurface=true drawState=4

03-24 17:40:06.587 937 5600 D WindowManager: All windows drawn!

03-24 17:40:06.617 937 1046 D WindowManager: finishScreenTurningOn: mAwake=true, mScreenOnEarly=true, mScreenOnFully=false, mKeyguardDrawComplete=true, mWindowManagerDrawComplete=true

03-24 17:40:06.617 937 1046 I WindowManager: Finished screen turning on...

03-24 17:40:06.617 937 1178 I DisplayPowerController: Unblocked screen on after 679 ms

相关trace信息

KeyguardController.keyguardGoingAway{ Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "keyguardGoingAway");}

//

AppTransitionController.handleAppTransitionReady -->

AppTransition.goodToGo-->

AppTransition.notifyAppTransitionStartingLocked --->

WindowManagerInternal.onAppTransitionStartingLocked

PhoneWindowManager.handleStartTransitionForKeyguardLw -->PhoneWindowManager.startKeyguardExitAnimation ---> KeyguardDelegate.startKeyguardExitAnimation

应用层申请的亮屏

final Window window = mInCallActivity.getWindow();

window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

/frameworks/base/services/core/java/com/android/server/wm/DisplayContent.java

//界面更新layout

applySurfaceChangesTransaction-->

performLayout-->

performLayoutNoTrace{

// Now perform layout of attached windows, which usually depend on the position of the

// window they are attached to. XXX does not deal with windows that are attached to windows

// that are themselves attached.

forAllWindows(mPerformLayoutAttached, true /* traverseTopToBottom */);

.....

}

private final ConsumermPerformLayoutAttached = w -> {

root.handleNotObscuredLocked(w,

mTmpApplySurfaceChangesTransactionState.obscured,

mTmpApplySurfaceChangesTransactionState.syswin);

}

/frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.java

boolean handleNotObscuredLocked(WindowState w, boolean obscured, boolean syswin){

888 if (w.mHasSurface && canBeSeen) {

889 if ((attrFlags & FLAG_KEEP_SCREEN_ON) != 0) {

890 mHoldScreen = w.mSession;

891 mHoldScreenWindow = w;

892 }

}

-->performSurfacePlacementNoTrace{

mWmService.setHoldScreenLocked(mHoldScreen);

}

/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java

///申请亮屏锁

mHoldingScreenWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, TAG_WM);

void setHoldScreenLocked(final Session newHoldScreen) {

final boolean hold = newHoldScreen != null;

if (hold && mHoldingScreenOn != newHoldScreen) {

mHoldingScreenWakeLock.setWorkSource(new WorkSource(newHoldScreen.mUid));

}

mHoldingScreenOn = newHoldScreen;

final boolean state = mHoldingScreenWakeLock.isHeld();

if (hold != state) {

if (hold) {

....

mHoldingScreenWakeLock.acquire();

}else{

.....

mHoldingScreenWakeLock.release();

}

}

}

///

PowerManager.release--->PowerManagerService.releaseWakeLock-->releaseWakeLockInternal-->removeWakeLockLocked-->applyWakeLockFlagsOnReleaseLocked

android锁屏退场动画,锁屏十秒超时,锁屏界面退出动画流程,FLAG_KEEP_SCREEN_ON亮屏...相关推荐

  1. Android Notification实现推送消息过程中接受到消息端有声音及震动及亮屏提示

    在Android Notification状态栏通知一文中,简单实现了消息的推送效果,这里就接着上文说一下,当用户接受到消息时的提示效果 // 5-加入震动及声音及亮屏 notification.de ...

  2. 一起Talk Android吧(第四百八十四回:使用逐帧动画实现倒计时效果)

    文章目录 概念介绍 使用方法 注意事项 各位看官们大家好,上一回中咱们说的例子是"如何修改Spinner的倒三角",这一回中咱们说的例子是" 使用逐帧动画实现倒计时效果& ...

  3. Silverlight Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation)...

    说到对象的旋转,或许就会联想到对象角度的概念.对象的旋转实现实际上就是利用对象的角度改变来实现的位置变换,在<Silverlight & Blend动画设计系列二:旋转动画(Rotate ...

  4. android 7.0 解锁亮屏,Android7.0亮屏流程分析

    亮屏的本质是改变屏幕的电源状态,经过一系列的调用会来到PowerManagerService中的updatePowerStateLocked() 1.PowerManagerService到Displ ...

  5. Android 亮屏流程分析

    https://blog.csdn.net/FightFightFight/article/details/79808100 相关文章: [Android Framework] 8.1 PowerMa ...

  6. Android 8.1 PowerManagerService分析(四)——亮屏流程分析

    欢迎大家关注我的掘金帐号 我会在那里定期更新最新版本的Android Framework源码分析! 相关文章: [Android Framework] 8.1 PowerManagerService分 ...

  7. Android手机亮屏流程分析

    极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 注:文章转于网络,点击查看原文 PowerManagerService 之前系列文章 ...

  8. Android亮屏和熄屏控制

    想要了解亮屏和灭屏的知识首先要了解系统服务 --- PowerManager.java 一:关于系统服务 --- PowerManager.java PowerManager.java就是管理我们电源 ...

  9. Android 10亮屏、熄屏和自动调光

    前言 Android设备与用户进行交互往往通过屏幕进行,目前市场手机设备对于屏幕越来月看重,oled.高刷.大尺寸.全色域等都是各大厂商的pk项,目的都是为了提高设备的交互体验,同时现在大多数设备都已 ...

最新文章

  1. 浙江发布数字化改革标准化体系建设方案,将于2025年底建成
  2. 推荐给程序猿们好用的谷歌插件
  3. 深入理解JavaScript系列(27):设计模式之建造者模式
  4. aix察看根目录各文件和子目录大小,去除文件系统统计
  5. python中if __name__ == ‘__main__‘:的简单理解
  6. C语言深度剖析书籍学习记录 第三章 预处理
  7. 叮咚买菜大裁员?回应:消息不实 目前业务都在正常运转
  8. 金立旗下18辆车产被司法拍卖 成交额近500万元
  9. 中值滤波器 ( Median Filter ) C++ 实现
  10. javascript 忽略 报错_.babelrc ignore忽略js无效
  11. java中线程总结,JAVA中线程的相关小结
  12. 电脑硬件知识扫盲 菜鸟提升必看电脑配置知识
  13. 谷歌SEO之如何使用Ahrefs工具选择关键词(2022更新教程)
  14. 访问知乎出现【出了一点问题,我们正在解决,去往首页】解决方案
  15. 64位CPU对于移动设备是没有意义
  16. pe怎么看计算机mac地址,Win10查看本机mac地址方法|电脑mac地址怎么查
  17. vue组件之Prop属性
  18. html 根据坐标画多边形,Canvas多边形绘制的实现方法
  19. 5分钟就能做一个Excel动态图表,你确定不学学?
  20. Oracle 常用工具和问题分析

热门文章

  1. 别让IT培训机构毁了你这一辈子
  2. PFC离散元与3DEC离散元数值模拟
  3. Java项目:企业绩效考核管理系统(java+SSM+JSP+bootstrap+jQuery+Mysql)
  4. 收获之英雄会产品论坛
  5. 《线性代数》总复习要点、公式、重要结论与重点释疑
  6. 2020低压电工考试题及低压电工复审模拟考试
  7. C++中虚函数相关问题(面经总结)
  8. 用Python语言编写五角星
  9. 【读书笔记->统计学】07-03 离散型概率分布-泊松分布概念简介
  10. oracle 开区间,OOAP0019 开区间错误