对于屏幕显示而言,整个是window,这个window里显示的东西是view(activity是逻辑上的东西,增加了生命周期管理等. 里面具体的东西也是view。而且启动activity的实现也是往window里加view),往window里加view,是通过调用WindowManager(WindowManagerImpl).addView()来实现的。在addView里,会为每个view创建一
转载 2024-09-08 13:22:19
7阅读
View和DecorView当Activity创建完毕时,会将DecorView添加到Window中,同时创建ViewRootImp对象,并将ViewRootImp对象与DecorView建立关联如下代码所示:root = new ViewRootImp(view.getContext(),display); root.setVIew(view,wparams,panelParentView);
一、Window、DecorView、ViewRootImp的关系1、Window和DecorView的创建activity.setContentView()说起,查看这个方法的源码:private Window mWindow; public void setContentView(@LayoutRes int layoutResID) { getWindow()
转载 2023-07-26 20:35:22
127阅读
一、SurfaceControl的创建SurfaceControl的创建是在ViewRootImpl中调用requestLayout,最后到WMS的relayoutWindow函数创建SurfaceControl对象。是通过WindowState的WindowStateAnimator对象调用createSurfaceLocked对象创建的。最后再通过outSurface传给ViewRootImp
转载 2024-01-29 00:45:16
149阅读
文章目录前言一、TracePlugin 类关系二、TracePlugin 的初始化三、TracePlugin 开始工作3.1 UIThreadMonitor说明两个核心3.2 Choreographer作用原理简析额外信息ViewRootImp 和 Choreographer3.3 LooperMonitor作用Printer如何实现总结添加空闲 Handler总结 前言接上文,我们首先来看 T
转载 2023-10-05 23:01:22
115阅读
目录关系图Dialog的创建Dialog的show方法WMS对应窗口的管理viewRootIMP对于返回结果的处理popWindow的创建过程 关系图先来一张图展示,activity的结构和内容。可知 activity,phoneWindow,WindowManagerIMPL,viewRootIMPL是一对一的关系,WindowManagerIMPL内部维护一个全局WindowManagerG
转载 2024-04-23 11:57:24
15阅读
源码要点mContentParent:下文中的mContentParent实际类型是ActionBarOverlayLayout,是我们布局文件的直接父布局Activity的展示过程大概就是atms回调activity的启动方法,然后会进行初始化PhoneWindow、DecorView。初始化完成后会等待wms回调onResume的逻辑处理,这里的重点是我们的UI展示关键类ViewRootImp
转载 2024-04-23 22:19:37
60阅读
Android的消息机制只要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。 Handler是Android消息机制的上层接口,这使得开发过程只需要和Handler交互即可。由于Android开发的限制,不能再子线程中访问UI控件,否则会触发程序异常(由ViewRootImp 的checkThread方法完成,throw Called
我们都知道在android中我们想更新一个ui,一定要在主线程中更新,也就是UI线程。因为这和我们的安卓系统设计有关,安卓的系统设计是单线程模式。规定 更新ui必须在主线程中那么会存在一些情况违反了这种规定,但又偏偏没有报错,运行成功。第一种情况,我们直接在onCreate中开启一个子线程更新ui,这是成功的。为什么呢?因为我们的视图绘制是由ViewRootImpl来管理,而ViewRootImp
序言在 Android 中,事件分发机制是指在用户与应用程序交互时,事件(如点击、触摸、滑动等)是如何被传递和处理的一套机制。事件接收和处理的步骤1 当用户在设备上进行交互时(如点击、触摸屏幕),操作系统会将相应的输入事件发送给应用程序。2 应用程序的窗口管理器(Window Manager)负责将输入事件传递给正确的窗口。3 在 Android 中,每个窗口都有一个对应的 ViewRootImp
转载 2024-06-27 22:39:57
96阅读