
Android Framework从入门到入土
文章平均质量分 92
yi诺千金
写过的文章也会不定时更新,一个人看源码没人讨论比较耗时,更新较慢。乐于互相交流,请多私信留言,大家共同进步。
掘金:https://juejin.cn/user/4464480371870584
展开
-
Android U 分屏——分割线相关
本期讨论的话题是分屏的分割线部分。原创 2025-04-03 18:10:12 · 233 阅读 · 0 评论 -
Android U 分屏——SystemUI侧处理
分屏是由上分屏(SideStage)、下分屏(MainStage)以及分割线组成。这里我们主要关注分屏的Stage部分,如下图所示:我们这里上分屏是电话,下分屏是短信。通过命令可以看层级结构,这里我们看看上下分屏指的是什么这里Task=331其实就是分屏的RootTask,通过(在system_server进程中)设置的,使其显示到最前面。其下面挂着和,这段代码也就是为了,即下面挂着下面挂着注:在android T(13) 中,上分屏为MainStage,下分屏为SideStage。原创 2025-03-04 10:16:42 · 890 阅读 · 0 评论 -
Android U system_server侧WindowContainerTransaction处理
前文分屏中说到Transitions的startTransition方法中,通过`mOrganizer.startNewTransition(type,wct);`提交WindowContainerTransaction相关事务到system_server侧,这里以此流程为例,讲解WindowOrganizerController是如何处理WindowContainerTransaction的。WindowContainerTransaction的发送都是通过WindowOrganizer的相关方法原创 2024-12-24 15:35:21 · 720 阅读 · 0 评论 -
Android Configuration相关
android Configuration相关的一些信息原创 2024-11-25 20:22:06 · 1131 阅读 · 0 评论 -
Android Framework中的addView和addWindow
addView方法是用于将视图添加到布局中的方法,通常用于在应用程序级别的布局中动态添加视图。addWindow方法是用于将窗口添加到窗口管理器中的方法,通常用于创建系统级别的窗口,例如:悬浮窗、对话框、Toast提示等。原创 2023-11-15 17:59:14 · 1116 阅读 · 0 评论 -
Android U 多任务启动分屏——Launcher流程(上分屏)
现在我们对桌面部分的流程进行分析。原创 2024-09-03 10:29:08 · 1102 阅读 · 0 评论 -
Android U 多任务启动分屏——SystemUI流程
前文说到通过接口跨进程调用到了SystemUI进程,我们继续分析分屏在systemui中的实现,这些实现都是在WMShell中实现的。原创 2024-11-18 16:08:43 · 1310 阅读 · 0 评论 -
Android U 多任务启动分屏——Launcher流程(下分屏)
前文讲了Launcher中上分屏流程,现在我们看看下分屏的流程。原创 2024-09-12 11:00:32 · 1248 阅读 · 0 评论 -
Android U 多任务分屏——整体流程介绍
原生的分屏功能是在多任务中,点击应用图标选择分屏,在选择多任务中的其他应用进行分屏。原创 2024-08-29 16:02:36 · 2300 阅读 · 0 评论 -
Android U WMShell动画调用堆栈
简单介绍WMshell动画调用的堆栈原创 2024-08-27 11:36:18 · 888 阅读 · 0 评论 -
Android T 远程动画显示流程其三——桌面侧动画启动到系统侧结束流程
接着前文分析我们通过IRemoteAnimationRunner跨进程通信从系统进程来到了桌面进程,这里是真正动画播放的逻辑。之后又通过IRemoteAnimationFinishedCallback跨进程通信回到系统进程,处理动画结束时的逻辑。原创 2024-02-27 15:21:08 · 2375 阅读 · 0 评论 -
Android T 远程动画显示流程其二——系统侧动画启动流程
我们以从桌面点击一个应用启动的场景来分析远程动画的系统启动流程原创 2024-02-21 14:30:48 · 2784 阅读 · 11 评论 -
Android T 远程动画显示流程其一——整体流程以及堆栈介绍
序本地动画和远程动画区别是什么?本地动画:自给自足。对自身SurfaceControl矢量动画进行控制。远程动画:拿来吧你!一个app A对另一个app B通过binder跨进程通信,控制app B的SurfaceControl矢量动画。无论是本地动画还是远程动画,都仅仅只是对SurfaceControl动画图层控制,而无法控制应用内部的View。注:矢量动画包含位移、放大、缩小、透明度、圆角等。常见的远程动画,就是我们从桌面点击一个应用启动这个应用,这个过程中会产生的动画就是远程动画。我们从原创 2024-01-29 18:52:34 · 3284 阅读 · 0 评论 -
Android T 窗口动画(本地动画)显示流程
如何创建一个窗口动画?我们通过先从APP创建一个窗口,以这个窗口的创建过程的窗口动画为例这个demo就是点击BUTTON显示窗口,点击CLOSE WINDOW关闭窗口原创 2023-11-08 15:43:17 · 3987 阅读 · 3 评论 -
Android T 禁止应用添加窗口的操作
什么情况下会出现我们需要禁止应用添加窗口的情况呢?假如有一个应用的窗口,我们点开后是透明的或者会影响到系统的使用,那么我们就有必要对这个窗口操作一下回顾我们在中所讲的内容禁止应用添加窗口的操作有两种1.直接在客户端对应用禁止添加窗口2.在服务端禁止应用添加窗口。原创 2023-09-21 16:20:22 · 522 阅读 · 0 评论 -
Android T 窗口层级其三 —— 层级结构树添加窗口
DisplayArea层级结构中的每一个DisplayArea,都包含着一个层级值范围,这个层级值范围表明了这个DisplayArea可以容纳哪些类型的窗口。每种窗口类型,都可以通过WindowManagerPolicy.getWindowLayerFromTypeLw方法,返回一个相应的层级值。尚未添加窗口的层级结构树,如图。这里我们根据上面的代码,以及。的信息简单画出如下树形图。原创 2023-09-06 20:47:49 · 2598 阅读 · 2 评论 -
Android T 窗口层级其二 —— 层级结构树的构建
如何通过dump中的内容找到对应的代码?我们dump窗口层级发现会有很多信息,这里我们以其中的DefaultTaskDisplayArea为例在源码的framework目录下查找该字符串,找到对应的代码就可以通过打印堆栈或者搜索代码跟踪的方式找到其调用逻辑也就是这一句当然我们上篇文章也讲到了DisplayContent代表的屏幕的DisplayArea层级结构的根节点,我们可以直接从DisplayContent.java的构造方法出发,追踪其流程。原创 2023-08-10 20:25:03 · 2769 阅读 · 6 评论 -
Android T 窗口层级其一 —— 容器类
窗口在App端是以PhoneWindow的形式存在,承载了一个Activity的View层级结构。这里我们探讨一下WMS端窗口的形式。原创 2023-08-08 21:39:32 · 2816 阅读 · 0 评论 -
android 窗口焦点介绍
我们经常会遇到一种的ANR异常,这种异常一般是没有焦点窗口FocusedWindow导致,且这类异常只会发生在,因为是需要找到一个然后再派发,而只需要找到即可。原创 2023-05-18 17:27:06 · 9073 阅读 · 11 评论 -
Android T Activity启动流程(更新中)
Activity:应用的某个activity入口ActivityManagerService:统筹管理着android的四大组件;统一调度各应用进程ActivityTaskManagerService:Android R新引入,专门用来管理Activity的启动,调度等功能ActivityStarter:专门用于处理activity新启动ActivityStartController:基于工厂设计模式,ActivityStarter的应用启动器。原创 2023-05-06 00:02:08 · 1020 阅读 · 0 评论 -
Android T 窗口点击过滤功能实现
有些应用可能会存在透明窗口,或者界面异常导致当前页面无法触发点击事件,如果要从input侧解决该问题,如何处理?原创 2023-05-05 14:17:01 · 719 阅读 · 0 评论 -
android input命令模拟事件以及事件注入实现
在坐标(500,100)的位置模拟点击事件参数解析:int inputSource:表示模拟事件的类型float x, float y:表示事件坐标点int displayId:在哪个屏幕上触发事件(一般用于多屏)原创 2023-05-04 22:32:07 · 1920 阅读 · 2 评论 -
InputReader流程梳理
对于设备事件,此函数对根据设备的可用性加载或移除设备对应的配置信息。对于原始输入事件,则在进行转译、封装与加工后将结果存储到mQueuedListener中。,这里主要创建InputDevice设备,并根据class给device添加了各种能够支持的Mapper。最后添加到mDevices的Vector容器中。所有事件处理完毕后,调用mQueuedListener.flush()将所有暂存的输入事件一次性地交付给InputDispatcher。方法开始加工数据,否则添加、删除或配置设备,这里以添加为例。原创 2023-05-03 01:28:29 · 332 阅读 · 0 评论 -
AOSP linux环境配置及其编译方法
linux环境配置,android源码环境搭建原创 2023-05-02 13:27:57 · 3340 阅读 · 0 评论 -
Android T wallpaper相关流程
什么是壁纸?壁纸即是一个壁纸服务,每换一张壁纸 ,就是将该图片写入壁纸文件,再启动一个壁纸服务读取该壁纸文件显示出来的过程。原创 2023-05-01 00:07:45 · 2257 阅读 · 2 评论 -
Android 窗口常见参数汇总
Window类中有一个WindowManager.LayoutParams类型的属性mWindowAttributes记录了当前窗口的相关参数原创 2023-04-29 18:42:32 · 4271 阅读 · 0 评论 -
Android T WMS窗口相关流程
什么是窗口窗口即是屏幕上的一块用于绘制各种UI元素并可以响应用户输入的一个矩形区域。从原理上讲,窗口的概念是独自占有一个Surface实例的显示区域(我们在屏幕上看到的图形都需要绘制在Surface上)。Window是个抽象类其实现类为PhoneWindow。原创 2023-04-24 23:44:34 · 9180 阅读 · 0 评论 -
Android T TaskSnapshot创建和移除流程
添加新的snapshot时,将旧的ActivityRecord移除,CacheEntry会直接被新的覆盖。taskSnapshot的创建流程中,最后一次可见的ActivityRecord与taskId建立映射,所以当且仅当之前建立映射的ActivityRecord被移除时,才会移除缓存。启动应用时prepare过渡动画,应用完成onresume时,execute过渡动画,所以此时可以handle过渡动画。应用的切换场会填充过度动画,task的快照流程的起点被设计在过渡动画的起点。原创 2023-04-21 00:16:02 · 3351 阅读 · 0 评论 -
Android T startingwindow流程梳理
startingwindow的一些流程梳理原创 2023-04-18 23:24:04 · 5410 阅读 · 6 评论 -
Android8.0开机动画启动到结束流程
介绍Android开机动画相关流程原创 2023-01-10 23:14:55 · 2593 阅读 · 0 评论