当前位置: 首页 > news >正文

Android 记录锁屏的上层相关源码以及debug WindowManager

SettingsProvider

  • frameworks/base/packages/SettingsProvider/res/values/defaults.xml
  • device/rockchip/rk356x/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
//device的overlay会覆盖frameworks的SettingsProvider
// 关于锁屏配置<integer name="def_screen_off_timeout">0x60000</integer><bool name="def_lockscreen_disabled">false</bool>

KeyGuard

  • frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.java
final int type = attrs.type;// This function assumes that the contents of the default display are processed first// before secondary displays.final DisplayContent displayContent = w.getDisplayContent();if (displayContent != null && displayContent.isDefaultDisplay) {// While a dream or keyguard is showing, obscure ordinary application content on// secondary displays (by forcibly enabling mirroring unless there is other content// we want to show) but still allow opaque keyguard dialogs to be shown.if (w.isDreamWindow() || mWmService.mPolicy.isKeyguardShowing()) {mObscureApplicationContentOnSecondaryDisplays = true;}displayHasContent = true;} else if (displayContent != null &&(!mObscureApplicationContentOnSecondaryDisplays|| (obscured && type == TYPE_KEYGUARD_DIALOG))) {// Allow full screen keyguard presentation dialogs to be seen.displayHasContent = true;}if ((privateflags & PRIVATE_FLAG_SUSTAINED_PERFORMANCE_MODE) != 0) {mSustainedPerformanceModeCurrent = true;}

FallbackHome

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

//box:skip FallbackHome to fix 2-3s black screen before launcher.if (!"box".equals(SystemProperties.get("ro.target.product"))) {if (!mBootAnimationStopped) {Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, "Stop bootanim", 0);// stop boot animation// formerly we would just kill the process, but we now ask it to exit so it// can choose where to stop the animation.SystemProperties.set("service.bootanim.exit", "1");mBootAnimationStopped = true;}if (!mForceDisplayEnabled && !checkBootAnimationCompleteLocked()) {ProtoLog.i(WM_DEBUG_BOOT, "performEnableScreen: Waiting for anim complete");return;}try {IBinder surfaceFlinger = ServiceManager.getService("SurfaceFlinger");if (surfaceFlinger != null) {ProtoLog.i(WM_ERROR, "******* TELLING SURFACE FLINGER WE ARE BOOTED!");Parcel data = Parcel.obtain();data.writeInterfaceToken("android.ui.ISurfaceComposer");surfaceFlinger.transact(IBinder.FIRST_CALL_TRANSACTION, // BOOT_FINISHEDdata, null, 0);data.recycle();}} catch (RemoteException ex) {ProtoLog.e(WM_ERROR, "Boot completed: SurfaceFlinger is dead!");}}

调试

  • frameworks/base/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java
    打开对应日志打印,来debug WindowManager
    static final String TAG_WM = "WindowManager";static final boolean DEBUG = false;static final boolean DEBUG_ANIM = false;static final boolean DEBUG_LAYOUT = false;static final boolean DEBUG_LAYERS = false;static final boolean DEBUG_INPUT = false;static final boolean DEBUG_INPUT_METHOD = false;static final boolean DEBUG_VISIBILITY = false;static final boolean DEBUG_CONFIGURATION = false;static final boolean DEBUG_STARTING_WINDOW_VERBOSE = false;static final boolean DEBUG_WALLPAPER = false;static final boolean DEBUG_WALLPAPER_LIGHT = false || DEBUG_WALLPAPER;static final boolean DEBUG_DRAG = false;static final boolean DEBUG_SCREENSHOT = false;static final boolean DEBUG_LAYOUT_REPEATS = false;static final boolean DEBUG_WINDOW_TRACE = false;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 大数据环境下的房地产数据分析与预测研究的设计与实现
  • 5 webSocket
  • 1个Xpath定位可以在Web页面查找到多个元素Selenium
  • Nginx部署前端项目尝试 - windows版
  • git commit报错: pre-commit hook failed (add --no-verify to bypass)
  • ceph log内容解析
  • 针对【module_or_function】的单元测试,全面覆盖可能的【edge_cases】
  • 云计算实训10——frp服务的搭建、ftp服务的搭建
  • Elasticsearch 使用terms对long类型日期统计按月销售
  • 1、springboot3 vue3开发平台-后端-项目构建
  • Go语言之参数传递
  • 判断一个字节中有几位置1,哪几位为1
  • 使用 Vue 和 ECharts 打造动态数据可视化图表
  • vue3大事件管理系统 === 首页 layout 文章分类页面 -
  • 【Neural signal processing and analysis zero to hero】- 2
  • python3.6+scrapy+mysql 爬虫实战
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【翻译】babel对TC39装饰器草案的实现
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 2017年终总结、随想
  • Android框架之Volley
  • Bytom交易说明(账户管理模式)
  • CentOS 7 修改主机名
  • ES6语法详解(一)
  • GitUp, 你不可错过的秀外慧中的git工具
  • Javascript基础之Array数组API
  • JWT究竟是什么呢?
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • vue-loader 源码解析系列之 selector
  • - 概述 - 《设计模式(极简c++版)》
  • 解决iview多表头动态更改列元素发生的错误
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 函数计算新功能-----支持C#函数
  • ​浅谈 Linux 中的 core dump 分析方法
  • ​数据结构之初始二叉树(3)
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #AngularJS#$sce.trustAsResourceUrl
  • #pragma预处理命令
  • #QT项目实战(天气预报)
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • ${ }的特别功能
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (笔试题)分解质因式
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (五)activiti-modeler 编辑器初步优化
  • (正则)提取页面里的img标签
  • (转)ObjectiveC 深浅拷贝学习
  • (转)程序员技术练级攻略
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ***检测工具之RKHunter AIDE
  • .JPG图片,各种压缩率下的文件尺寸
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 5.0正式发布,有什么功能特性(翻译)