自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android开发技能 - Perfetto系列

现在我需要做得就是运行这个脚本,选择一个输出文件名,然后添加跟踪点的列表,我总是从Android 平台的Systrace文档中复制这个很棒的默认列表,我会将链接放在下面的注释中,然后点击回车执行,打开手机启动APP做一些滑动,然后使用Ctrl C停止录制。指令中,有成吨的配置项可以配置。因此,如果您是更高级的用户,请务必深入研究。会将Trace文件保存在提供的路径下,但是也需要使用浏览器打开它。的文档,并且您可能想知道我们通常的默认设置中未被包含的内容。

2025-03-22 19:02:42 315

原创 Android显示系统——Transaction基础功能

Android显示系统——Transaction基础功能 - TPrime.A - 博客园

2025-03-20 11:41:14 93

原创 Android中的Wifi框架系列

Android WIFI主要分为六大层,分别是WiFi Settings层,Wifi Framework层,Wifi JNI 层, Wifi HardWare 层, Wpa_supplicant 层和 Wifi Kernel 层。原文链接:https://blog.youkuaiyun.com/chenmi123321/article/details/119248132。Wpa_supplicant层 ------> C框架层。Wifi HardWare层 ------> C框架层。Android wifi框架图。

2025-03-14 09:36:49 245

原创 抖音开屏动画未结束与 WMS 直接相关

特别是厂商定制的ROM可能在WMS的行为上有差异,比如动画超时时间设置不同,导致在原生系统上正常,但在某些设备上卡住。如果动画没结束,WMS可能会认为窗口还在处理中,导致界面卡住。首先,用户之前已经讨论了WMS相关的动画未结束的问题,现在具体到抖音启动时的开屏动画,可能的原因有哪些呢?此外,如果主线程被阻塞,动画的回调无法执行,WMS可能无法收到动画结束的信号,从而卡住启动页面。另外,WMS在管理窗口时,如果窗口的绘制状态没有正确更新,比如isDrawn标志未设置为true,也可能导致界面无法进入下一步。

2025-03-07 09:46:57 924

原创 分析白屏winscope

在 Android 设备上,播放视频时锁屏后解锁出现闪白屏的问题,通常与 Surface 生命周期、视频渲染或 UI 刷新机制有关。要定位和解决这个问题,可以按照以下步骤进行分析,并利用工具(如果适用)来辅助调试。

2025-03-04 18:57:08 337

原创 Android一句话系列--

https://juejin.cn/post/7474057172856340517?from=search-suggesthttps://juejin.cn/post/7472314970220265481

2025-03-04 09:28:39 71

原创 Android 常见dumpsys方法与黑屏问题分析处理总结

bash复制。

2025-03-03 19:28:07 1047

原创 WMS窗口

找到有问题的窗口查看关键的参数 mDrawState确认窗口绘制状态 isOnScreen、isVisible当前窗口已经是可见,并显示到屏幕上 NO_SURFACE、DRAW_PENDING这两个状态表示应用端没有完成对应的surface申请和绘制,此类问题需要应用端查看;COMMIT_DRAW_PENDING、READY_TO_SHOW,表示应用端已经完成绘制并上报状态给WMS,则需要WMS查看显示控制流程。如果dump上没有显示绘制状态则可以在日志中搜索:*

2025-03-03 09:37:32 145

原创 窗口的显示过程

/ 这在窗口的绘制已提交之后、其surface实际显示之前的时间段内设置。它用于延迟显示surface,直到令牌中的所有窗口都准备好显示。// 这通常在窗口第一次完成绘制后但其surface尚未显示时设置。// 这通常在 Surface 被创建后但窗口尚未被绘制时设置。// surface的控制器(app进程的renderthread将在这上面绘制)// 窗口布局, 放置surfaces。// 在窗口首次显示在屏幕上时设置。// 处理客户端窗口的绘制。// 管理窗口的绘制状态。// 没有Surface。

2025-02-28 20:16:54 255

原创 ANR系列总结

配合 Main Log(Android Log) 和 EventLog 把 CPU 开始和结束的时间点内的所有有用信息提取出来到一个 文件中,搜索的主要关键字:pid,进程名,WindowManager、ActivityManager(关键字参考下一节的关键 Log 那里)系统变慢 :比如 Slow operation、Slow dispatch、Slow delivery、dvm_lock_sample、binder_sample。收集关键操作场景,比如解锁、安装应用、亮灭屏、应用启动等。

2025-02-27 20:18:15 199

原创 分发超时==anr

原因是因为MotionEvent在5秒前就已经发送,但是Gesture Monitor] Screenshot这个接受者根本没有响应导致,这里也打印表面原因就是Gesture Monitor] Screenshot没有响应导致的ANR,注意这里的。上面方式确实对于应用自己原因耗时等引发anr确实够了,但是系统开发往往很多anr都没办法简单通过上述步骤找到原因,很可能trace中根本啥线索没有。2、找到对应的anr的trace,看看anr对应主线程的是否有阻塞耗时等堆栈。查看ANR时候派发的事件。

2025-02-26 09:44:34 594

原创 Android渲染机制

问题1.vsync如何协调应用和SurfaceFlinger配合来完成UI渲染、显示,App接收vsync后要做哪些工作?2.requestLayout和invalidate区别?3.performTraversals到底是干什么了?4.surfaceflinger怎么分发vsync信号的?5.app需要主动请求vsync信号,sw sync才会分发给app?6.surfaceview显示视频的时候,视频会一直频繁刷新界面,为什么整个UI界面没有卡顿?

2025-02-23 12:54:38 722

原创 博客摘录「 Perfetto详细解析」2025年2月23日

Choreograp可以在“inflate”()这一个块区处放大,并且观察到底是哪些View在被填充过程中耗时比较严重。

2025-02-23 12:00:25 289

原创 Android Systrace 流畅性案例分析

由于多个 Buffer 缓冲机制存在,App 主线程和渲染线程,有时候即使超过一个 Vsync 周期,也不一定会出现卡顿,所以这里我们需要看SurfaceFlinger 进程的主线程,来确认是否真的发生了卡顿 ,比如上面 3.1 部分的图,App 主线程耗时 110 ms,对应的 SurfaceFlinger 主线程如下。事实上,所有超过一个 Vsync 周期的 doFrame 耗时(即大家看到的黄帧和红帧),我们都需要去看一下是否真的发生的掉帧,就算没有掉帧,也要看一下原因,比如下面这个。

2025-02-22 11:13:23 274

原创 Android 常见dumpsys方法与黑屏问题分析处理总结

参考:https://juejin.cn/post/7365351534601912383?from=search-suggest

2025-02-21 13:37:30 78

原创 AI初步系列

5.大模型的微调、RAG 、Agent。4.学习transferform架构。6.学习大模型技术应用。

2025-02-19 15:43:51 342

原创 如何使用perfetto 查看binder对端调用的基础操作

开始记录,操作设备以触发 Binder 调用。:确保设备已启用开发者选项和 USB 调试。中设置合适的缓冲区大小(如 32MB)。:Android 10 及以上版本。中设置跟踪时长(如 10 秒)。查看 Binder 调用。视图分析调用来源和目标。事件,了解调用方向。确定对端进程和线程。

2025-02-19 09:31:37 196

原创 Android 系日志关键字含义

wm_on_paused_called表示Activity的onPause被调用完成,这个状态处于不可接收输入事件,但还处于可见状态,不能在里面在耗时的操作会导致下一个界面启动慢导致ANR。am_on_create_called 表示Activity的 onCreate被调用完成,即APP中的onCreate调用完成.am_on_resume_called 表示Activity的onResume被调用完成.wm_on_stop_called 表示Activity的onResume被调用完成。

2025-02-18 14:49:53 922

原创 Android显示系统SurfaceFlinger详解 之干货

开机显示桌面、从桌面点击 App 图标到 Activity显示在屏幕上的过程又是怎样的呢?下面介绍Android系统中的“画家” - SurfaceFlinger.

2025-02-18 09:37:55 270

原创 Event log的各 TAG流程分析含义

am_restart_activity 表示AMS发起handleLaunchActivity的调用, Activity restart,有2种可能,一种是从Recent中启动,另一种是热启动,如果设置了and Resume,将会调用ActivityThread的resume流程。m_on_paused_called表示Activity的onPause被调用完成,这个状态处于不可接收输入事件,但还处于可见状态,不能在里面在耗时的操作会导致下一个界面启动慢导致ANR。表示调用了startActivity;

2025-02-17 16:41:35 250

原创 android crash分析流程记录

如:am_crash ,查看下进程号12763。通过进程号找到对应的crash 日志。查看到最后一行,找到对应的相关log。如:AndroidRuntime。关键日志 am_crash。

2025-02-17 10:23:05 336

原创 winscope

打开此文件,然后把手机上的文件adb pull /data/misc/wmtrace。打开配套源码的aosp 中winscope的html文件,文件路径。1.在开发者选项里,打开对应的开关,之后,可以在下拉栏里看到开关选项。3.生成的文件在:data/misc/wintrace 目录里。选择对应的文件,Surfaceflinger、 Window。2.复现问题,关闭winscope trace。4.使用chrome 观看winscope。

2025-02-15 10:20:21 191

原创 perfetto 系列

参考;1.第一步抓取:a.首先执行命令b. 操作手机,复现c adb pulld 直接利用ui.perfetto.dev打开。

2025-02-13 17:06:37 917

原创 WMS窗口的数据分析

使用winscope手机要处于root状态才能使用使用手机自带的winscope在手机设置里面,找到开发者选项->快捷设置开发者图块->打开 “ Winscope跟踪 ”打开后复现问题,最后再关闭这个开关,就表示抓取完成导出文件adb pull /data/misc/wmtrace把导出文件在源码路径的android-13.0.0_r6/prebuilts/misc/common/winscope/winscope.html打开即可。

2025-02-13 13:50:57 334

原创 Android异常与性能优化相关

【0176】Android 面试- Android异常与性能优化相关 - OzTaking - 博客园

2025-02-10 20:16:58 67

原创 Android 界面滑动卡顿分析与解决方案

众所周知,界面的流畅度主要依赖FPS这个值,这个值是通过(1s/渲染1帧所花费的时间)计算所得,FPS值越大视频越流畅,所以就需要渲染1帧的时间能尽量缩短。正常流畅度的FPS值在60左右,即渲染一帧的时间不应大于17ms。主线程中不要放置耗时的操作,耗时操作可以扔Thread再通过Handler与主线程同步或使用AsyncTask来完成耗时操作。1.UI线程(main)有耗时操作。2.视图渲染时间过长,导致卡顿。滑动ListView卡顿。

2025-02-10 19:51:32 159

原创 android launcher 桌面点击图标崩溃 如何分析

在 Android 中,Launcher 桌面点击图标崩溃的问题可能涉及多个方面,包括 Launcher 应用本身、图标对应的目标应用、系统资源或权限问题等。进入设备的“设置” > “应用” > “Launcher” > “存储” > “清除数据”。解决方法:检查 Launcher 中加载图标和应用的代码,确保资源正确初始化。从崩溃堆栈中找到具体的类和方法,定位到 Launcher 源码中的相关代码。解决方法:检查 Launcher 的资源文件,确保图标资源存在且正确。

2025-02-10 13:35:38 459

原创 ANR 定位的流程

ANR 的时间点是否在应用onresume结束前,若是,是否在绘画布局window,若是则是窗口问题,否则,和app相关;若不是onresume前发生的anr,就是app的问题。分为IO的使用 workload >=70% -----Io 的issue。app是否空闲,若是的话,则是View的问题。否则则是app本身的问题。后台广播会被抢占CPU ,若是前台占用大量的cpu。看下前三的Top3,如果是,low memory。a 函数阻塞,死循环,主线程IO ,处理大数据。binder的locked。

2025-02-08 19:22:17 127

摄像头抓图保存

简便实用,功能强大,流程清晰。简单的C++编程语言。

2012-03-29

VC屏幕抓图.

很适合初学者,实用方便。功能简单。使用了最简单的编程语言。流程清晰

2012-03-29

操作系统原理与实现

可以全面的学习操作系统原理与其实现。这本书籍讲解的非常详细。

2011-11-06

DirectShow视频预览捕获

本程序是基于DirectShow的视频采集可以实现预览,程序简单易懂,且操作方便,是初学者的较好范例。

2011-08-16

vc++视频传输的实例讲解

本文件包括了视频的抓捕,视频的传输,录像,音频的采集,语音识别系统

2011-06-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除