Android LayoutInflater 监听单个控件渲染时长

news/2025/2/4 1:15:36/

在做布局优化的时候,需要在布局中定位到渲染时长比较长的控件去进行针对性的优化。那要怎么做呢?可以借助 LayoutInflater 的 Factory2 来实现

LayoutInflater.setFactory2() 方法用于设置 LayoutInflater.Factory2,它可以拦截修改 LayoutInflater 在解析布局文件时创建视图的过程。通过设置 Factory2,可以对创建的视图进行自定义处理,例如修改视图属性、替换视图类型等。

package android.view;public abstract class LayoutInflater {// ...public final View tryCreateView(View parent, String name, Context context, AttributeSet attrs) {View view;if (mFactory2 != null) { // 若 mFactory2 不为空,则回调view = mFactory2.onCreateView(parent, name, context, attrs);} else {view = null;}// ...return view;}// ...
}

 每一个控件在创建时,若 Factory2 不为空时,都会执行回调


 使用:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {getLayoutInflater().setFactory2(new LayoutInflater.Factory2() {@Overridepublic View onCreateView(View parent, String name, Context context, AttributeSet attrs) {long time = System.currentTimeMillis();View view = getDelegate().createView(parent, name, context, attrs);Log.i("kang", name + " 耗时:" + (System.currentTimeMillis() - time));return view;}@Overridepublic View onCreateView(String name, Context context, AttributeSet attrs) {return null;}});super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}
}

通过调用 setFactory2() 方法并传递自定义的 Factory2 实例,可以拦截和修改 LayoutInflater 创建视图对象的过程。拦截后可以做任何想做的事,例如动态地改变视图的外观、行为或属性。


核心思想就是计算单个 View 渲染前后的时间差,这样就知道单个控件渲染时长了,知道了单个渲染时长就能对单个耗时长的控件做针对性优化

需要注意的是,设置这个监听需要在 setContentView() 之前调用(因为如果都渲染完了,再设置监听那肯定就无效了)


http://www.ppmy.cn/news/469702.html

相关文章

固态硬盘的SLC、MLC、TLC和QLC的区别

NOR Flash 和 NAND Flash是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Electrically Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Programmable R…

SSD固态硬盘颗粒SLC MLC TLC QLC有什么区别

NOR Flash 和 NAND Flash是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Electrically Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Programmable R…

固态硬盘颗粒:SLC/MLC/TLC区别

SLC : Single-Level Cell ,即1bit/cell,速度快寿命长,价格超贵(约MLC 3倍以上的价格),约10万次擦写寿命 MLC: Multi-Level Cell,即2bit/cell,速度一般寿命一般,价格一般…

使用flash id不拆盘查看SSD颗粒

参考 常见SSD固态硬盘不拆盘判断颗粒的办法_固态硬盘_什么值得买 读懂固态硬盘中的“黑话”-简易百科 先需要知道自己的主控是什么,常见的是这些 Phison 群联 SMI 慧荣 Marvel 美满电子(马牌主控) Maxio 联芸 Yeestor(SiliconGo) u…

固态硬盘(SSD)——NAND闪存芯片(颗粒)QLC、SLC、MLC、TLC

一、基本概念 固态硬盘(SSD):固态驱动器(Solid State Disk或Solid State Drive,简称SSD),俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘,因为台湾英语里把固体电容称之为Solid而得…

如何自制一款tlc颗粒的固态硬盘

   2019/11/01 2020/02/24修订英文 第一次制作 第一版 第一次修订 主板:smi2256k带512m缓存 颗粒:h27qfgdpem5r 海力士64G颗粒 图1:颗粒信息图 2256k短接图 本次采用8贴颗粒 贴f1/f2 f9/f10 …

SSD固态硬盘的闪存芯片颗粒介绍

固态硬盘凭借其存取速率超快等自身优势,被越来越多的电脑爱好者所青睐,并迅速普及到了广大用户的电脑中,因为固态硬盘与传统机械硬盘相比,确实在运行效率等方面有了质的提升,这里先了解一些评判固态硬盘优劣的知识&…

SSD 闪存颗粒详解

SSD用户的数据全部存储于NAND闪存里,它是SSD的存储媒介。SSD最主要的成本就集中在NAND闪存上。NAND闪存不仅决定了SSD的使用寿命,而且对SSD的性能影响也非常大。NAND闪存颗粒结构及工作原理都很复杂,接下来我们会继续推出系列文章来重点介绍闪…