- 博客(20)
- 收藏
- 关注
原创 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
883
原创 Android焦点窗口
何为焦点窗口?顾名思义就是有焦点窗口,要注意和view的焦点概念要做区分,两个不是一个层面上的概念。为什么窗口要拥有焦点呢,下面都是我的理解,有不对的地方欢迎讨论:焦点窗口主要使用在InputDispachar分发按键事件——keyevent阶段,在keyevent分发阶段,此时的焦点窗口就是该事件应该分发给的窗口。不像触摸事件,在分发过程中可以通过触摸的坐标推断给事件应该分发给那个窗口,keyeven来自物理按键,没有对应的坐标,只能通过焦点窗口确定发送给那个窗口。
2024-06-14 17:25:24
1852
原创 Android13上两种监控屏幕input输入的方式
近日在工作之余梳理android的input代码时,发现监控屏幕上的input输入,除了之前的MonitorInput的方法,有出现了一种新的方式——SpyWindow。下面将从等几个方面,分别梳理下InputMonitor和SpyWindow。
2024-06-05 01:01:05
1538
7
原创 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
2603
2
原创 Android远程过渡动画
Android的系统动画我分为三类:窗口动画,过渡动画,旋转动画。而这篇文章将分析过渡动画。而过渡动画根据创建leash和运行动画是否在同一个进程可以分为本地过渡动画和远程过渡动画,启动远程过渡动画流程相比于其他系统动画的过程,因为涉及到了跨进程,所以涉及到的过程还是比较复杂的,这篇文章将基于Android13分析远程过渡动画。
2023-10-26 17:55:30
3472
5
原创 Looper机制监测卡顿
Android性能监测:Looper机制监测卡顿一.简介 要使用Looper机制检测卡顿,建议先熟悉一下Looper机制。 要是了解Looper机制,那么对于理解基于Looper机制监测卡顿的原理就会十分的简单。它对卡顿的检测的步骤大致可分为三步: 1.在Looper对消息处理的循环里,每当取出一个消息,先记录下时间开始t1。 2.然后当Looper里面处理完这个消息后记录记录一下结束时间t2。 3.用结束时间 t2 减去开始时间 t1 ,他们的差值就是处理这个消息所花费的
2022-04-01 22:41:08
3145
原创 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
299
原创 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
4505
3
原创 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
2882
原创 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
1660
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人