自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Android 应用冷启动event log

位于 com/android/server/wm/ActivityTaskSupervisor.java 中的 realStartActivityLocked 意味着真正 的要去client端去启动一个activity。发生在给clent端发送ResumeActivityItem之后并设置相应的ActivityRecord的状态为 RESUMED之后.发生在wms计算出新的焦点窗口后把窗口焦点窗口信息发送给sf的时刻.activity的onCreate被调用后调用。

2024-07-16 01:37:40 652

原创 Android和焦点相关的ANR

在android设备上和焦点相关的anr我认为有两种。

2024-06-15 15:29:22 698

原创 Android焦点窗口

何为焦点窗口?顾名思义就是有焦点窗口,要注意和view的焦点概念要做区分,两个不是一个层面上的概念。为什么窗口要拥有焦点呢,下面都是我的理解,有不对的地方欢迎讨论:焦点窗口主要使用在InputDispachar分发按键事件——keyevent阶段,在keyevent分发阶段,此时的焦点窗口就是该事件应该分发给的窗口。不像触摸事件,在分发过程中可以通过触摸的坐标推断给事件应该分发给那个窗口,keyeven来自物理按键,没有对应的坐标,只能通过焦点窗口确定发送给那个窗口。

2024-06-14 17:25:24 655

原创 Android13上两种监控屏幕input输入的方式

近日在工作之余梳理android的input代码时,发现监控屏幕上的input输入,除了之前的MonitorInput的方法,有出现了一种新的方式——SpyWindow。下面将从等几个方面,分别梳理下InputMonitor和SpyWindow。

2024-06-05 01:01:05 856 4

原创 SurfaceFlinger::commit frameMissed计算

surfaceflinger frame miss

2024-04-22 22:42:27 197

原创 Android13 手势监听实现

Android 手势监听

2024-04-15 21:20:35 282 1

原创 Andoid SurfaceFlinger(三) VSYNC的申请,生产,下发与校准

上文中不断提及一个概念,即app和surfaceFlinger直接使用的vsync(sf-vsync,app-vsync,appsf-vsync),并不是硬件vsync,而是在硬件vsync的基础上模拟出来一个x为vsync的序号,y为vsync时间点的一个一次函数(y = k*x + b)的软件vsync模型,surfaceflinger和app在申请所需的vsync时会通过此模型,再加上一些偏移, 计算出vsync时间,等到vsync时间到,下发一个vsync信号。

2024-03-12 22:25:02 1620 1

原创 Andoid SurfaceFlinger(二) VSYNC的开始,连续,结束

VSYNC的开始,连续,结束

2024-03-03 21:01:01 1877

原创 Activity的冷启动与生命周期

本文基于android12,13 进行分析activity冷启动的流程如下几个步骤。

2023-11-01 15:46:53 474 3

原创 Android远程过渡动画

Android的系统动画我分为三类:窗口动画,过渡动画,旋转动画。而这篇文章将分析过渡动画。而过渡动画根据创建leash和运行动画是否在同一个进程可以分为本地过渡动画和远程过渡动画,启动远程过渡动画流程相比于其他系统动画的过程,因为涉及到了跨进程,所以涉及到的过程还是比较复杂的,这篇文章将基于Android13分析远程过渡动画。

2023-10-26 17:55:30 2500 5

原创 Android窗口动画

android 窗口动画

2023-07-15 16:36:56 2110 1

原创 Looper机制监测卡顿

Android性能监测:Looper机制监测卡顿一.简介​ 要使用Looper机制检测卡顿,建议先熟悉一下Looper机制。​ 要是了解Looper机制,那么对于理解基于Looper机制监测卡顿的原理就会十分的简单。它对卡顿的检测的步骤大致可分为三步:​ 1.在Looper对消息处理的循环里,每当取出一个消息,先记录下时间开始t1。​ 2.然后当Looper里面处理完这个消息后记录记录一下结束时间t2。​ 3.用结束时间 t2 减去开始时间 t1 ,他们的差值就是处理这个消息所花费的

2022-04-01 22:41:08 3003

原创 Handler机制源码分析

一.Carson的handler机制的源码分析写的非常的清晰,强烈建议大家去学习,我今天写这篇文章只是做简单的补充。Handler机制源码分析1.Handler 类中,分发处理消息的方法dispatchMessage(): /** * Handle system messages here. */ public void dispatchMessage(Message msg) { if (msg.callback != null) {

2022-04-01 01:38:21 257

原创 OkHttp4源码分析

OKHTTP 分发器 拦截器 连接池

2022-03-29 20:29:01 501

原创 Glide(二)Glide的with,load,into

Glide的with,load,into在Glide的常规使用中,我们是这样使用的:protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView imageView = findViewById(R.id.image); // 同学们:获取ImageView控件而已

2022-03-28 01:32:21 4325 3

原创 Glide(一)生命周期的监听

Glide对生命周期的监听

2022-03-24 02:40:00 1090

原创 Activity,ams,atms 启动

开新坑了。这篇文章将从ams/atms启动,activity的启动,activity的栈结构和activity的生命周期出发,来更全面的了解activty与ams服务。一. ams/atms简单介绍与启动流程1.ams/atms简单介绍应该是在android10之前,android的四大组件统一由ams进行管理,在android10之后,atms负责activity的相关管理,剩下的三大组件还是由ams管理,不过在ams中持有atms。2.ams/atms启动流程ams与atms的启动流程将直

2022-01-13 23:31:02 2766

原创 Android事件分发机制

Android的事件分发机制

2022-01-02 23:19:03 20283 6

原创 view的绘制流程

提问1:view是在什么时候添加到屏幕上的? setContentView()? ,并不是 之前分析setContentView()的流程可以得知在这个过程中只是创建出了DecorView,同时通过反射的方式创建出xml文件中相关组件的对象,此时组件中的view还并为与窗口关联。提问2:下面在哪一处,可以打印出mTextView的高度?1?2?3? 实际上只有2能拿到。因为1,3出执行的时候还没有生成对应的高度,而在2处,是个handler message 虽然没有延时,但是当message被执行时,

2021-12-28 16:35:42 1505

空空如也

空空如也

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

TA关注的人

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