android锁屏退场动画,锁屏十秒超时,锁屏界面退出动画流程,FLAG_KEEP_SCREEN_ON亮屏...
锁屏界面十秒超时
/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亮屏...相关推荐
- Android Notification实现推送消息过程中接受到消息端有声音及震动及亮屏提示
在Android Notification状态栏通知一文中,简单实现了消息的推送效果,这里就接着上文说一下,当用户接受到消息时的提示效果 // 5-加入震动及声音及亮屏 notification.de ...
- 一起Talk Android吧(第四百八十四回:使用逐帧动画实现倒计时效果)
文章目录 概念介绍 使用方法 注意事项 各位看官们大家好,上一回中咱们说的例子是"如何修改Spinner的倒三角",这一回中咱们说的例子是" 使用逐帧动画实现倒计时效果& ...
- Silverlight Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation)...
说到对象的旋转,或许就会联想到对象角度的概念.对象的旋转实现实际上就是利用对象的角度改变来实现的位置变换,在<Silverlight & Blend动画设计系列二:旋转动画(Rotate ...
- android 7.0 解锁亮屏,Android7.0亮屏流程分析
亮屏的本质是改变屏幕的电源状态,经过一系列的调用会来到PowerManagerService中的updatePowerStateLocked() 1.PowerManagerService到Displ ...
- Android 亮屏流程分析
https://blog.csdn.net/FightFightFight/article/details/79808100 相关文章: [Android Framework] 8.1 PowerMa ...
- Android 8.1 PowerManagerService分析(四)——亮屏流程分析
欢迎大家关注我的掘金帐号 我会在那里定期更新最新版本的Android Framework源码分析! 相关文章: [Android Framework] 8.1 PowerManagerService分 ...
- Android手机亮屏流程分析
极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 注:文章转于网络,点击查看原文 PowerManagerService 之前系列文章 ...
- Android亮屏和熄屏控制
想要了解亮屏和灭屏的知识首先要了解系统服务 --- PowerManager.java 一:关于系统服务 --- PowerManager.java PowerManager.java就是管理我们电源 ...
- Android 10亮屏、熄屏和自动调光
前言 Android设备与用户进行交互往往通过屏幕进行,目前市场手机设备对于屏幕越来月看重,oled.高刷.大尺寸.全色域等都是各大厂商的pk项,目的都是为了提高设备的交互体验,同时现在大多数设备都已 ...
最新文章
- 浙江发布数字化改革标准化体系建设方案,将于2025年底建成
- 推荐给程序猿们好用的谷歌插件
- 深入理解JavaScript系列(27):设计模式之建造者模式
- aix察看根目录各文件和子目录大小,去除文件系统统计
- python中if __name__ == ‘__main__‘:的简单理解
- C语言深度剖析书籍学习记录 第三章 预处理
- 叮咚买菜大裁员?回应:消息不实 目前业务都在正常运转
- 金立旗下18辆车产被司法拍卖 成交额近500万元
- 中值滤波器 ( Median Filter ) C++ 实现
- javascript 忽略 报错_.babelrc ignore忽略js无效
- java中线程总结,JAVA中线程的相关小结
- 电脑硬件知识扫盲 菜鸟提升必看电脑配置知识
- 谷歌SEO之如何使用Ahrefs工具选择关键词(2022更新教程)
- 访问知乎出现【出了一点问题,我们正在解决,去往首页】解决方案
- 64位CPU对于移动设备是没有意义
- pe怎么看计算机mac地址,Win10查看本机mac地址方法|电脑mac地址怎么查
- vue组件之Prop属性
- html 根据坐标画多边形,Canvas多边形绘制的实现方法
- 5分钟就能做一个Excel动态图表,你确定不学学?
- Oracle 常用工具和问题分析