首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在执行ViewGroup.addView()之后会运行哪些方法?

在执行ViewGroup.addView()之后,会运行以下方法:

  1. measure(int widthMeasureSpec, int heightMeasureSpec):测量视图的大小。该方法会根据视图的布局参数和父容器的测量要求,计算出视图的测量宽度和高度。
  2. layout(int left, int top, int right, int bottom):确定视图在父容器中的位置。该方法会根据视图的测量宽度和高度,以及父容器的布局参数,计算出视图的左上角和右下角的坐标。
  3. onMeasure(int widthMeasureSpec, int heightMeasureSpec):测量视图的大小。该方法是ViewGroup的抽象方法,需要子类实现。在执行ViewGroup.addView()时,会调用子视图的onMeasure()方法来测量子视图的大小。
  4. onLayout(boolean changed, int left, int top, int right, int bottom):确定视图在父容器中的位置。该方法是ViewGroup的抽象方法,需要子类实现。在执行ViewGroup.addView()时,会调用子视图的onLayout()方法来确定子视图的位置。
  5. dispatchDraw(Canvas canvas):绘制视图的内容。该方法会在视图的onDraw()方法之前被调用,用于绘制视图的背景、边框等内容。
  6. onDraw(Canvas canvas):绘制视图的内容。该方法会在dispatchDraw()方法之后被调用,用于绘制视图的具体内容。

以上方法是在执行ViewGroup.addView()之后会运行的一些方法。它们负责测量视图的大小、确定视图在父容器中的位置,并绘制视图的内容。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【DB笔试面试603】Oracle中,固定SQL执行计划的方法哪些

♣ 题目部分 Oracle中,固定SQL执行计划的方法哪些?...♣ 答案部分 实际项目中,通常在开发环境下,一些SQL执行没有任何功能问题,而当到了生产环境或生产环境的数据量发生较大的变量时,其SQL的执行效率非常低。...如果修改源程序的成本比较大,那么可以使用一些方法不改变源应用程序的情况下更改特定SQL的执行计划并固定下来。因为SQL语句的执行计划发生更改时,可能存在性能风险。...有4种方式可以固定和控制执行计划,分别是使用Hint(提示)、OUTLINE(存储概要)、SQL PROFILE(SQL概要文件)和SPM(SQL Plan Management,SQL计划管理),如下表所示

71220
  • 你真懂的ViewStub,include,merge么

    注意事项 使用include最常见的问题就是findViewById查找不到目标控件,这个问题出现的前提是include时设置了id,而在findViewById时却用了被include进来的布局的根元素...if (finishInflate) { parent.onFinishInflate(); } } 匹配到TAG_INCLUDE,执行..." android:id="@+id/my_comm_lv" android:layout_height="match_parent" > 在运行时...Merge 其实就是减少include布局文件时的层级。标签是这几个标签中最让我费解的,大家可能想不到,标签竟然会是一个Activity,里面有一个LinearLayout对象。...例如我们复用一个含有多个子控件的布局时,肯定需要一个ViewGroup来管理,例如这样 : <FrameLayout xmlns:android="http://schemas.android.com

    41420

    Android布局优化ViewStub、include、merge使用与源码分析

    开发中UI布局是我们都会遇到的问题,随着UI越来越多,布局的重复性、复杂度也会随之增长。...例如你有五个界面,这五个界面的顶部都有布局一模一样的一个返回按钮和一个文本控件,不使用include的情况下你每个界面都需要重新xml里面写同样的返回按钮和文本控件的顶部栏,这样的重复工作会相当的恶心...对于布局文件的解析,最终都会调用到LayoutInflater的inflate方法,该方法最终又会调用rInflate方法,我们看看这个方法。...match_parent" android:id="@+id/my_comm_lv" android:layout_height="match_parent" > 在运行时...最后会把目标布局的根元素返回,因此我们调用inflate()函数时可以直接获得根元素,省掉了findViewById的过程。

    1.1K20

    如何快速解决或避免EDI系统磁盘空间不足?

    本文将为大家介绍出现磁盘空间不足,导致EDI系统运行异常的紧急处理方法。解决方案如果您已经遇到了由于磁盘已满导致EDI系统无法正常运行的情况应该如何处理呢?...针对磁盘空间不足的问题您可以选择紧急清理知行桥内部存储的部分日志文件以释放磁盘空间。那么具体可以删除哪些文件?知行桥EDI系统默认开启归档日志,我们可以归档路径下选择可删除的文件。...以Received文件夹为例,点击进入后会看到按日期分类的文件夹。这个文件夹下存放了知行桥EDI系统的历史日志。可以选择删除最早日期的文件夹,释放磁盘空间。...Windows :搜索服务,服务页面中找到CDdata Arc,右键选择启动。启动成功后会显示正在运行。这时回到知行桥EDI系统中,可以看到已经正常启动了。...Linux:执行指令:service arc start即可启动知行桥EDI系统然后使用指令:service arc status查询EDI系统是否正常启动。

    1.4K20

    day013: JS数据类型问——概念篇

    day013: JS数据类型问——概念篇 1.JS原始数据类型有哪些?引用数据类型有哪些?...,数组对象-Array,正则对象-RegExp,日期对象-Date,数学函数-Math) 函数Function 2.说出下面运行的结果,解释原因。...其实在这个语句运行的过程中做了这样几件事情: var s = new String('1'); s.toString(); s = null; 第一步: 创建String类实例。...第二步: 调用实例方法。 第三步: 执行方法立即销毁这个实例。 整个过程体现了 基本包装类型的性质,而基本包装类型恰恰属于基本数据类型,包括Boolean, Number和String。...0.1和0.2转换成二进制后会无限循环,由于标准位数的限制后面多余的位数会被截掉,此时就已经出现了精度的损失,相加后因浮点数小数位的限制而截断的二进制数字转换为十进制就会变成0.30000000000000004

    34720

    View视图的创建

    撸代码的过程中经常遇到创建 View 视图,创建视图有四种方式,但是这四种创建方式到底有什么不同呢?以前只知道能创建,但是不是这四种创建方式的区别,今天让我们一起去解析一下这几种创建方式。...* view 创建方式 android API中有下列几种创建方式 [view创建方法.jpg] 点进去看源码可以知道这四个方法最终调用同一个方法 \* @param parser xml...请看 《性能优化布局优化篇二 使用标签 》) 部分一( 如果根布局标签是"merge") // 如果根布局标签是"merge" if (TAG\...+ "ViewGroup root and attachToRoot=true"); } //会执行这个方法...rInflateChildren(parser, view, attrs, true); //添加到父布局容器中 viewGroup.addView

    99460

    启动优化三问—字节跳动真题

    App启动流程中我们能进行优化的地方有哪些? 具体有哪些优化方法? 分析启动耗时的方法 App启动流程中我们能进行优化的地方有哪些?...Application的onCreate方法,大量三方库的初始化都在这里进行, Activity的onCreate、onStart、onResume方法。 具体有哪些优化方法?...这里需要的方案就是今日头条方案: 1、Application的attachBaseContext方法里,启动另一个进程的LoadDexActivity去异步执行MultiDex逻辑,显示Loading...onCreate方法,也就是执行主进程正常的逻辑。...而记录时间的方法我们之前也说过,就是通过looper()方法中循环去从MessageQueue中去取msg的时候,dispatchMessage方法后会有logging日志打印,所以只需要自定义一个

    75420

    Jmeter系列no-gui模式

    15 2020-07 今天距2021年169天 这是ITester软件测试小栈第141次推文 本文1960字,阅读约需6分钟 Jmeter系列接口自动化实战,主要介绍Jmeter接口自动化需要哪些控件...二 操作步骤 ①配置jmeter环境变量,可以参照文章Jmeter系列简介与环境安装。 ②GUI模式下,调试好自动化脚本。 ③命令行运行自动化脚本。...-r 远程执行 -> Jmter.properties文件中指定的所有远程服务器 -H 代理主机 -> 设置 JMeter 使用的代理主机 -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号...⑦ 分别在View Results Tree及Summary Report选择生成的result.jtl,选择完后会展示结果信息。 ? ?...② 运行成功后,会在report目录下生成测试报告。 ? ③ 用浏览器打开index.html,效果如下: ? ? 注意:每次执行命令都要先去目录下清空报告和jtl文件。 以上 That‘s all

    91010

    利器 | TestNG 与 Junit 对比,测试框架如何选择?

    测试结果: 由测试结果可看到每个测试用例执行前都会先执行@BeforeMethod注解的方法,之后都会执行@AfterMethod注解的方法 2....@BeforeClass和@AfterClass 测试类运行之前运行@BeforeClass和@AfterClass 测试结果: 由测试结果可以看出在测试类执行后会先后执行一次被@BeforeClass...执行前后分别执行一次 3.2 套件测试 @BeforeTest+@AfterTest 测试类SuiteTestConfig中输入@BeforeTest+@AfterTest注解的方法,xml套件配置不变...测试结果: 由测试结果可以看到,每个test执行前后都会先后执行一次由@BeforeTest、@AfterTest注解的方法 4.忽略测试@Test(enable=false) 测试方法test1...>中的用例可以运行在不同线程下 1)创建3个方法,打印线程ID 2)三种不同级别选择 methods-所有用例都可以不同的线程下执行 设置parallel为methods级别,thread-count

    3.8K31

    RxJava2 实战(1) - 后台执行耗时操作,实时通知 UI 更新

    首先回忆一下,以前我们一般会用以下两种方式来实现这一效果: 创建一个新的子线程,在其run()方法执行耗时的操作,并通过一个和主线程Looper关联的Handler发送消息给主线程更新进度显示、处理结果...使用AsyncTask,在其doInBackground方法执行耗时的操作,调用publishProgress方法通知主线程,然后onProgressUpdate中更新进度显示,onPostExecute...2.2 示例代码 我们的界面上有一个按钮mTvDownload,点击之后会发起一个耗时的任务,这里我们用Thread.sleep来模拟耗时的操作,每隔500ms我们会将当前的进度通知主线程,mTvDownloadResult...observeOn(AndroidSchedulers.mainThread()):指定observer的回调方法运行在主线程。...3.2 线程的类型 subscribeOn/observeOn都要求传入一个Schedulers的子类,它就代表了运行线程类型,下面我们来看一下都有哪些选择: Schedulers.computation

    2.2K80

    都2020年了Andoid还能如何性能优化(1)—— 启动速度优化

    Process的start方法中,这个方法是用于进程创建的,接着,便会执行到ActivityThread的main方法,这个方法可以看做是我们单个App进程的入口,相当于Java进程的main方法,在其中会执行消息循环的创建与主线程...其中的AppstartActivity全路径可以省略前面的packageName adb shell am start -W [packageName]/[AppstartActivity全路径] 执行后会得到三个时间...4.使用TraceView 这个的使用参考我以前写的文章 《Android性能优化系列App启动优化》 三.启动优化进阶方法 启动优化一些常用的方法参考《Android性能优化系列App启动优化》...完成资源顺序重排后,我们需要确定是否真正生效。比如有哪些资源文件加载了,它是发生真实的磁盘 I/O,还是命中了 Page Cache。 3)自动化。...Atlas 中的dalvik_hack可以通过下面的方法去掉 verify,但是当前没有支持 ART 平台。 这个黑科技可以大大降低首次启动的速度,代价是对后续运行会产生轻微的影响。

    44510

    高并发——从源码角度深度解析线程池是如何实现优雅退出的

    【高并发专题】中,我们从源码角度深度分析了线程池中那些重要的接口和抽象类、深度解析了线程池是如何创建的,ThreadPoolExecutor类有哪些属性和内部类,以及它们对线程池的重要作用。...深度分析了线程池的整体核心流程,以及如何拆解Worker线程的执行代码,深度解析Worker线程的执行流程。 注意:以上内容大家可以【高并发专题】中进行查阅。...《高并发——ThreadPoolExecutor类居然是这样保证线程池正确运行的...》...《高并发——通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程》 《高并发——通过源码深度分析线程池中Worker线程的执行流程》 本文,我们就来从源码角度深度解析线程池是如何优雅的退出程序的...但是调用shutdown()方法之前放入任务队列中的任务还是要执行的。此方法是非阻塞方法,调用后会立即返回,并不会等待任务队列中的任务全部执行完毕后再返回。

    31710

    【推荐】Spark知识点

    ,然后每天就是各种配置,话不多说了,赶紧来复习一下spark; 大概从以下几点进行说明: 1、Spark有哪些特点 2、Spark的部署方式有哪些?...迭代器模式:逻辑代码执行时,真正的逻辑并未执行,而是创建了新的迭代器,新的迭代器保存着对当前迭代器的引用从而形成链表,每个迭代器需要实现hasNext(),next()两个方法。...当触发计算时,最后一个创建的迭代器会调用next方法,next方法会调用父迭代器的next方法。...Spark有以下四种部署方式,分别是:Local,Standalone,Yarn,Mesos 本地模式(Local) 该模式运行任务不会提交集群中,只本节点执行,有两种情况: 本地模式: 测试或实验性质的本地运行模式...Executor启动之后会向SC注册并申请task 6、SC分配task给executor,executor执行任务并向Driver(运行在client之上的)汇报,以便客户端可以随时监控任务的运行状态

    34910

    RxJava2 实战知识梳理(1) - 后台执行耗时操作,实时通知 UI 更新

    首先回忆一下,以前我们一般会用以下两种方式来实现这一效果: 创建一个新的子线程,在其run()方法执行耗时的操作,并通过一个和主线程Looper关联的Handler发送消息给主线程更新进度显示...使用AsyncTask,在其doInBackground方法执行耗时的操作,调用publishProgress方法通知主线程,然后onProgressUpdate中更新进度显示,onPostExecute...2.2 示例代码 我们的界面上有一个按钮mTvDownload,点击之后会发起一个耗时的任务,这里我们用Thread.sleep来模拟耗时的操作,每隔500ms我们会将当前的进度通知主线程,mTvDownloadResult...observeOn(AndroidSchedulers.mainThread()):指定observer的回调方法运行在主线程。...3.2 线程的类型 subscribeOn/observeOn都要求传入一个Schedulers的子类,它就代表了运行线程类型,下面我们来看一下都有哪些选择: Schedulers.computation

    67120

    2021腾讯社招java技术岗面试题

    根本区别:进程是并发执行的程序执行过程中分配和管理资源的基本单位,线程是任务调度和执行的基本单位。一个进程可以有多个线程。...执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口,但是线程不能独立运行,必须依存在应用程序中。 系统开销:进程执行开销大,线程执行开销小。...这个问题当时没有回答上来,查了一下资料,我的理解就是Array的一些方法,比如add,get,set方法是怎么实现的吧 ---- 12、你有什么问题要问的?...问了一下自己想要问的,入职以后会在哪个部门工作等等吧 三、二面面试题 1、自我介绍 我叫…....type=1 进程间8种通信方式详解 https://blog.csdn.net/violet_echo_0908/article/details/51201278 java集合List底层实现原理

    1K10

    SpringBoot源码Tomcat加载原理分析

    SpringBoot源码Tomcat加载原理 一、Tomcat基础   我们想要搞清楚SpringBoot启动中到的是如何集成的Tomcat容器,这个就需要我们先对Tomcat本身要有所了解,不然这个就没办法分析了...2.启动流程   Tomcat的架构相关的内容本文中就不再赘述,可以查阅Tomcat源码专题的内容,我们来看下当我们要启动一个Tomcat服务,我们其实是执行的bin目录下的脚本程序,startup.bat...查看 startup.bat 可以看到在这个脚本中调用了 catalina.bat这个脚本文件,继续进入,配置信息很多,找核心的脚本 对应的我们进入到doStart方法中 最后会执行的程序是...而这个MAINCLASS变量是前面定义的有的 其实前面看了这么一堆的脚本文件,都是在做一些环境的检测和运行时的参数,最终执行的是Bootstrap中的main方法。...中注入了哪些和Web容器相关的配置类。

    26310

    Java面试葵花宝典打印版【1】

    派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使更适合特殊的需要。 3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。...换言之,很可能数个使用者执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 执行。...最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为提供外同步。...finalize是Object类的一个方法垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。...sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

    25130
    领券