Android框架杂谈

发布时间:2026/10/23 13:02:34

Android框架杂谈 1.调用栈打印StackTraceElement st[] Thread.currentThread().getStackTrace();for (int i 0; i st.length; i) {System.out.println(showInput-Stack[i] st[i].toString());}2.setpowermode 中powermode对应关系surfaceflinger层面Off 0Doze 1On 2DozeSuspend 33.开发者选项触摸小圆点在InputReader阶段进行绘制具体绘制是在frameworks/base/libs/input/TouchSpotController.cpp中updateSprite函数中。void TouchSpotController::Spot::updateSprite(const SpriteIcon* icon, float x, float y,int32_t displayId) {sprite-setLayer(Sprite::BASE_LAYER_SPOT id);sprite-setAlpha(alpha);sprite-setTransformationMatrix(SpriteTransformationMatrix(scale, 0.0f, 0.0f, scale));sprite-setPosition(x, y);sprite-setDisplayId(displayId);...}4.Power键亮灭屏log关键字【1】kernel 上报power key[kernel log][53:pmic_thread]kpd: Power Key generate, pressed0【2】上层收到按键事件[eng版本上才有此logmain_log]WindowManager: interceptKeyTq keycode26 ...【3】PMS的wakeUp被调用[sys_log]PowerManagerService: Waking up from Dozing【4】准备绘制界面[sys_log]DisplayPowerController: Blocking screen on until initial contents have been drawn.【5】第一个wiating for drawn表示keyguard画完开始画window[sys_log]WindowManager: Waiting for drawn Window{6732b98 u0 com.android.settings/com.android.settings.SubSettings}:【6】底层resume时间L版本 setAutoSuspend/M版本 setPowerMode【main_log】注意这个log出现的时间点不是固定的要看底层resume的时间SurfaceControl: Excessive delay in setPowerMode(): 403ms【M 版本】PowerManagerService-JNI: Excessive delay in autosuspend_disable() while turning screen on: 424ms【L版本】【7】绘制界面完成及花费的时间[sys_log]DisplayPowerController: Unblocked screen on after 409 ms【8】上层设置背光[sys_log]DisplayPowerState: Requesting new screen state: stateON, backlight211【9】底层设置背光[sys_log,亮屏时间power key到此处的时间不一定每个版本都有此logkernel log]提示如果出现此log表示屏幕已经点亮PhotonicModulat][name:leds][LED]Set Backlight directly 211 at time 4294992661, mapping level is 211【10】亮屏操作完成[sys_log]DisplayPowerController: Finished business5.影响亮屏快慢的因素大致有三种1设置背光流程出问题了导致屏幕黑屏2window绘制时间过长导致屏幕block时间过长3底层surfacecontroller准备时间过长而根据遇到的亮屏慢的问题基本上都是由于window绘制时间过长导致屏幕亮屏慢最近处理的几个亮屏慢的问题其中关键log信息基本都是13-11 11:17:49.002 1313 1092 I DisplayPowerController: Blocking screen on until initial contents have been drawn.12-18 11:18:55.020 1313 1092 I DisplayPowerController: Unblocked screen on after 6018 ms6.关于触发拯救模式导致机器进入recovery。拯救模式又称救援模式是Android 8.0新增的一个功能。问题场景如下进入隐私空间长按控制中心的移动数据按钮此时com.android.phone进程报停还有一定的几率进入recovery。由于com.android.phone或者com.android.systemui是个常驻进程不断的重启又不断的died所以触发救援模式。救援模式在com.android.phone进程的不断started与died的过程中level等级被不断的提升一旦到达FACTORY_RESET等级系统就会自主进入recovery注最后一句log是自行添加的用来判断是哪个进程导致触发救援模式。W RescueParty: Attempting rescue level RESET_SETTINGS_UNTRUSTED_DEFAULTSW RescueParty: Attempting rescue level RESET_SETTINGS_UNTRUSTED_CHANGESW RescueParty: Attempting rescue level RESET_SETTINGS_TRUSTED_DEFAULTSW RescueParty: Attempting rescue level WARM_REBOOTW RescueParty: Attempting rescue level FACTORY_RESET所以处理进入recovery的问题首先就要判断是不是救援模式被触发了。7.冻屏问题总结首先按menu看是否有反应有反应说明不是死机冻屏冻屏出现过如下三种现象定屏1按虚拟键有背景色无法响应任何触摸事件音量键无作用power键有作用ADB能连定屏2按虚拟键无背景色power键有作用ADB能连定屏3power键都无作用ADB能连根据描述可见如上三个现象严重程度递增8.Input debug开关先执行enable_input_prop.bat脚本然后adb shell getprop persist.log.tag.InputTransportPublisher看下属性是否设置成功。成功了再抓下logenable_input_prop.batecho off:: 设置Android系统属性以启用InputTransportPublisher的调试日志adb shell setprop persist.log.tag.InputTransportPublisher DEBUGadb shell setprop persist.log.tag.InputDispatcherTouchMode DEBUGadb shell setprop persist.log.tag.InputDispatcherTouchOcclusion DEBUGadb shell setprop persist.log.tag.InputDispatcherInboundEvent DEBUGadb shell setprop persist.log.tag.InputDispatcherOutboundEvent DEBUGadb shell setprop persist.log.tag.InputDispatcherDispatchCycle DEBUGadb shell setprop persist.log.tag.InputDispatcherChannelCreation DEBUGadb shell setprop persist.log.tag.InputDispatcherFocus DEBUGadb shell setprop persist.log.tag.InputDispatcherAppSwitch DEBUGecho [SUCCESS] set property : persist.log.tag.InputTransportPublisherDEBUGpause
延伸阅读

更多相关文章

2026/10/21 7:02:28

BARF: Bundle-Adjusting Neural Radiance Fields 论文阅读

摘要 神经辐射场 (NeRF) 可以合成真实世界场景的全新视角的照片,其性能优异,因此在计算机视觉领域引起较大的兴趣。NeRF的一个限制条件是需要准确相机位姿。本文提出了集束调整神经辐射场 (BARF),可以用不完美的(甚至不知道&…

2026/10/21 20:11:43

实用小工具

目录1、win置顶窗口小工具2、查看串口实时数据Device Monitoring Studio3、通过使用Dependency工具检测是否缺少动态库。4、CopyTranslator 实时翻译5、VOFA 可扩展多功能串口助手6、fairygui 游戏GUI解决方案7、winmerge 和 cc-compare 文件比对工具(1)…

2026/10/23 13:01:19

ThinkPHP教学管理系统实战:环境搭建、核心模块与避坑指南

简介:这是一套基于ThinkPHP框架搭建的简单教学管理系统源码,面向PHP初学者、Web开发入门者及需要课程设计参考的学生,帮助理解MVC架构下的教务管理实现。压缩包共2000个文件,约11.04MB,以1105个php源码为核心&#xff…

2026/10/23 13:01:19

一体化管理工具:多站点登录态维持与任务调度实战

1. 从零散工具到统一面板:为什么需要一体化管理1.1 一个真实场景引出的痛点我接触过不少玩私有影音库的朋友,几乎每个人都经历过同一个阶段:硬盘里攒了几十上百个资源站账号,浏览器书签栏塞得满满当当,每次想找一部片子…

2026/10/23 13:01:19

IE Tab Multi(Enhance):Chrome中嵌入真实IE内核的兼容方案

简介:IE Tab Multi (Enhance)_12.2.12.1-0.zip 是一款专为Windows平台Chrome浏览器设计的IE兼容性增强扩展离线安装包,面向企业内网用户、政务/金融类系统运维人员及需频繁访问ActiveX控件网页的开发者。它在Chrome中无缝嵌入IE渲染引擎,避免…

2026/10/23 13:01:19

MATLAB形态学与边缘检测实现药片缺陷检测的工程化落地

简介:本资源面向图像处理初学者与工业视觉检测方向的开发者,围绕药片缺陷与有无检测这一典型场景,提供一套基于MATLAB的完整实现方案。包内共15个文件,以7张jpg测试图像、5个m脚本文件、2个doc与1个docx说明文档为主,压…

2026/10/23 12:56:18

自定义AI智能体:打造后端开发专属搭子实战指南

1. 为什么我要把AI助手改造成专属后端开发搭子刚接触AI编程助手那会儿,我跟大多数人一样,把它当成一个高级点的代码补全工具——敲几个字符,它帮我补全一行;写个函数名,它帮我生成个大概框架。用了一段时间之后我发现&…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/23 0:02:26

Verilog实现FPGA密码锁:矩阵键盘与状态机设计实战

说实话,这几年接触了不少想入门FPGA的朋友,如果你问哪个项目能一口气把Verilog的核心基本功串起来,我通常会推荐电子密码锁。这个项目看着不起眼,却把矩阵键盘扫描、按键消抖、状态机设计、动态显示刷新、外设控制这些数字逻辑里的…

2026/10/23 0:02:26

数据服务监控运维实战:从指标体系到告警治理与故障排查

周末凌晨两点,手机震了。第一反应是“数据服务挂了”。打开电脑看了下,果然,某张核心报表的数据产出时间已经超过SLA两小时,下游三个业务方连着发来问询。这种场景,做过大数据运维的人都不会陌生。数据服务的监控与运维…

2026/10/23 0:02:26

FreeRTOS任务通知实战详解:内核原理、API与避坑指南

裸机编程切到RTOS之后,任务之间的通信和同步永远是躲不开的坎。前面聊过队列、信号量、互斥锁、事件组,这次把FreeRTOS任务通知(Task Notification)单独拎出来讲透。原因很简单:任务通知是FreeRTOS里最容易用错、也最容…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑