当前位置: 首页 > news >正文

setContentView 流程

setContentView 流程

  1. Activity -> setContentView
    开发者设置入口
  2. PhoneWindow -> setContentView
    mWindow 在 attach 时初始化为 PhoneWindow,同时PhoneWindow也是Window唯一的实现类
  3. PhoneWindow -> installDecor
    这一步的作用是 初始化DecorView, 把DecorView填充到 mContentParent;
  • generateDecor 用于生成DecorView
  • generateLayout 用于设置应用系统属性和特别的布局
  • DecorView - > onResourcesLoaded 方法就是把上一步生成的layout添加到DecorView中
  1. 上一步就是为了获取 mContentParent, 回到 setContentView 中,通过inflate方法把 layoutResId 添加到 mContentParent

如果是使用 AppCompatActivity, 还会多一步设置 mSubDecor。 它是在DecorView 上又加了一层,主要用于设置主题

UI 绘制流程

参考 onCreate和onResume为什么不能直接获取宽高.md

  1. ActivityThread -> handleLaunchActivity -> performLaunchActivity
    performLaunchActivity 中主要是做了3件事情:
  • 创建了Activity对象
  • 调用attach, 初始化 WindowWindowManager
  • 调用了onCreate方法。
  • 上面的 setContentView
  1. ActivityThread -> handleResumeActivity
  • 执行 Activity 的 onResume 方法
  • 执行 wm.addView(decor, l); , 把之前的 DecorView 添加到视图中,开始执行布局的绘制流程。
  1. 最后会走到布局管理器中ViewRootImplperformTraversals方法中
  private void performTraversals() {……// 【关键点1】分发mAttachInfohost.dispatchAttachedToWindow(mAttachInfo, 0);……//【关键点2】开始测量performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);……//【关键点3】开始布局performLayout(lp, mWidth, mHeight);……// 【关键点4】开始绘制performDraw();……}

此时UI绘制流程基本结束,页面也展示出来了

相关文章:

setContentView 流程

setContentView 流程 Activity -> setContentView 开发者设置入口PhoneWindow -> setContentView mWindow 在 attach 时初始化为 PhoneWindow,同时PhoneWindow也是Window唯一的实现类PhoneWindow -> installDecor 这一步的作用是 初始化DecorView, 把Deco…...

基于STM32设计的智能手环(ESP8266+华为云IOT)178

基于STM32设计的智能手环(178) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】项目硬件模块组成【3】ESP8266工作模式配置【4】Android手机APP开发思路【5】项目模块划分1.2 项目功能需求(1)生理参数监测(2)计步功能(3)GPS定位(4)时间显示(5)OLED显示屏展示(…...

EE trade:实物黄金投资的好处和坏处

实物黄金是指以金条、金币、金饰品等形式存在的黄金。实物黄金具有保值、避险、抗通胀等特性,被视为传统的投资避险工具。近年来,随着全球经济形势的不确定性增加,实物黄金的投资价值也受到越来越多的关注。 投资实物黄金的优势 保值性&…...

Flutter RSA公钥转PEM

需添加依赖:pointycastle​​​​​​​ 参考链接:https://github.com/bcgit/pc-dart/issues/165 import dart:convert; import dart:typed_data;import package:pointycastle/pointycastle.dart; import package:pointycastle/src/platform_check/pl…...

下载站怎么防护DDOS攻击

下载站怎么防护DDOS攻击?随着互联网的发展,下载站作为资源分享的重要平台,面临着日益严峻的DDoS(分布式拒绝服务)攻击威胁。DDoS攻击通过大量恶意请求占用网络资源,导致服务器响应缓慢甚至瘫痪,…...

docker拉取镜像-配置阿里云镜像加速

1、配置阿里云镜像&#xff08;用于拉取镜像加速&#xff09; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo syst…...

ai写作软件哪个好?亲测好用的5款工具分享

一眨眼&#xff0c;初伏就要到来了~办公室内的高温仿佛连空气都凝固了&#xff0c;键盘敲击声似乎都变得沉重而迟缓。在这样的天气下&#xff0c;创意与灵感似乎也躲进了阴凉处&#xff0c;办公效率显然大打折扣。 幸运的是&#xff0c;被我找到了新的应对之策&#xff0c;那便…...

Blender 中导出模型fbx

准备模型&#xff1a;确保你的模型已经完成&#xff0c;并且所有的材质、纹理等都已设置好。 应用所有变换&#xff1a; 选择模型&#xff0c;按下 CtrlA&#xff0c;选择 "All Transforms" 以应用所有的变换&#xff08;位置、旋转和缩放&#xff09;。 导出模型&a…...

景联文科技以高质量多模态数据集赋能AI大模型,精准匹配提升模型性能

在人工智能的浪潮中&#xff0c;语料数据如同建筑的基石&#xff0c;其质量、规模和运用策略直接决定了AI模型的表现和应用的广泛性。 景联文科技在AI领域深耕多年&#xff0c;打磨了高质量多模态数据集&#xff0c;致力于为不同训练阶段的算法精准匹配高质量数据资源。 3000万…...

【ROS2】中级:tf2-编写监听器(Python)

目标&#xff1a;学习如何使用 tf2 获取帧变换。 教程级别&#xff1a;中级 时间&#xff1a;10 分钟 目录 背景 先决条件 任务 1. 编写监听节点2. 更新启动文件3. 构建4. 运行 摘要 背景 在之前的教程中&#xff0c;我们创建了一个 tf2 广播器来发布乌龟的姿态到 tf2。 在本教…...

用QFramework重构飞机大战(Siki Andy的)(下02)(06-0? 游戏界面及之后的所有面板)

用QFramework重构飞机大战(Siki Andy的)&#xff08;下02&#xff09;&#xff08;06-0&#xff1f; 游戏界面及之后的所有面板&#xff09; GitHub // 官网的 全民飞机大战&#xff08;第一季&#xff09;-----框架设计篇&#xff08;Unity 2017.3&#xff09; 全民飞机大战&…...

Apifox报错404:网络错误,请检查网络,或者稍后再试的解决办法

详细报错如图&#xff1a; 解决办法&#xff1a; 1、检查 请求方法&#xff08;get&#xff0c;post&#xff09;是否正确&#xff0c;请求的URL是否正确&#xff0c;如果不正确&#xff0c;修改后重新发起请求&#xff1b;如果都正确&#xff0c;再参考2 2、复制curl用postm…...

腾讯混元大模型集成LangChain

腾讯混元大模型集成LangChain 获取API密钥 登录控制台–>访问管理–>API密钥管理–>新建密钥&#xff0c;获取到SecretId和SecretKey。访问链接&#xff1a;https://console.cloud.tencent.com/cam/capi python SDK方式调用大模型 可参考腾讯官方API import json…...

C++心决之stl中那些你不知道的秘密(string篇)

目录 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符串 2. 标准库中的string类 2.1 string类 2.2 string类的常用接口说明 1. string类对象的常见构造 2. string类对象的操作 3.vs和g下string结构的说明 3. string类的模拟实现 3.2 浅拷贝 3.3 深拷贝 3.4 写…...

date 命令学习

文章目录 date 命令学习1. 命令简介2. 语法参数2.1 使用语法2.2 说明2.3 参数说明 3. 使用案例:arrow_right: 星期名缩写 %a:arrow_right: 星期名全写 %A:arrow_right: 月名缩写 %b:arrow_right: 月名全称 %B:arrow_right: 日期和时间 %c:arrow_right: 世纪 %C:arrow_right: 按…...

前端vue后端java使用easyexcel框架下载表格xls数据工具类

一 使用alibaba开源的 easyexcel框架&#xff0c;后台只需一个工具类即可实现下载 后端下载实现 依赖 pom.xml <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependen…...

C#,开发过程中技术点GPT问答记录

6、为什么说GUI编程是事件驱动的&#xff1f; GUI&#xff08;图形用户界面&#xff09;编程是一种以图形方式构建用户界面的编程方法&#xff0c;它主要采用事件驱动模型进行程序逻辑的组织。在事件驱动的编程中&#xff0c;程序并不按照固定的顺序线性执行&#xff0c;而是等…...

wifi中的PSR技术

在Wi-Fi网络中&#xff0c;PSR&#xff08;Preferred Spatial Reuse&#xff09;是一种新兴技术&#xff0c;旨在提高频谱利用效率&#xff0c;特别是在高密度网络环境中。PSR通过允许多个接入点&#xff08;AP&#xff09;和设备在相同频谱资源上同时进行通信&#xff0c;从而…...

电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App

电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App 定制化...

Vscode插件推荐——智能切换输入法(Smart IME)

前言 相信广大程序员朋友在写代码的时候一定会遇到过一个令人非常头疼的事情——切换输入法&#xff0c;特别是对于那些勤于写注释的朋友&#xff0c;简直就是噩梦&#xff0c;正所谓懒人推动世界发展&#xff0c;这不&#xff0c;今天就向大家推荐一款好用的vscode插件&#…...

用 MinIO 搭建 S3 兼容对象存储服务

用 MinIO 搭建 S3 兼容对象存储服务 分类&#xff1a;开源项目部署 MinIO 适合附件、备份归档和 S3 兼容对象文件。这类主题真正跑起来并不难&#xff0c;难的是上线后稳定、可备份、能排错。本文按实操方式整理一套可以直接落地的流程&#xff0c;默认你已经会登录 Linux 服务…...

2026年,写给所有还在迷茫的技术人:你的坚持终将闪耀

站在2026年的节点回望&#xff0c;整个互联网行业的寒潮似乎还没完全退去&#xff0c;AI大模型重构业务逻辑的浪潮又拍在了每个技术人的岸边。尤其是对千万软件测试从业者来说&#xff0c;这种迷茫感来得更加具体&#xff1a;手工测试岗位不断被自动化脚本挤压&#xff0c;纯功…...

Linux】2026 年 13 款最强视频播放器(含安装命令 + 优缺点)

Linux视频播放器选择多样&#xff0c;如榛名、MPlayer、VLC等&#xff0c;功能强大、支持多格式&#xff0c;满足各类用户需求 一、榛名视频播放器 榛名视频播放器是一款基于Qt的开源视频播放器&#xff0c;提供了许多基本功能。其特点包括支持Youtube-dl、控制播放速度、丰富…...

别再用curl硬刚了!3种主流语言(Python/Node.js/Java)调用ChatGPT API的工业级封装方案

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ChatGPT API调用方法概览与工业级封装核心原则 ChatGPT API 作为 OpenAI 提供的标准化接口&#xff0c;支持文本生成、对话管理、函数调用等多种能力。其核心调用方式基于 RESTful HTTP 请求&#xff0c;需通过…...

3步解锁网易云音乐NCM文件:免费转换工具终极指南

3步解锁网易云音乐NCM文件&#xff1a;免费转换工具终极指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM格式音乐无法在其他设备…...

如何用bsf创建第一个3D场景:从零开始的完整教程

如何用bsf创建第一个3D场景&#xff1a;从零开始的完整教程 【免费下载链接】B3DFramework Modern C library for the development of real-time graphical applications 项目地址: https://gitcode.com/gh_mirrors/bs/B3DFramework bsf&#xff08;B3DFramework&#x…...

3分钟告别Windows桌面混乱:这款免费工具让你的图标瞬间变整齐

3分钟告别Windows桌面混乱&#xff1a;这款免费工具让你的图标瞬间变整齐 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 还在为Windows桌面上那些杂乱无章的图标头疼吗&…...

Claude Mythos:首个具备自主渗透能力的通用AI安全模型

1. 这不是一次普通升级&#xff1a;Mythos 的能力跃迁到底意味着什么 如果你过去三年一直在跟进大模型的演进节奏&#xff0c;大概率会记得2023年Claude 2发布时那种“稳扎稳打”的观感——推理更连贯、长文本更可靠、代码能力有提升&#xff0c;但整体仍属于渐进式优化。2024年…...

taotoken多模型聚合平台为matlab开发者提供稳定ai能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 taotoken多模型聚合平台为matlab开发者提供稳定ai能力 对于使用MATLAB进行数据分析、仿真建模或算法开发的工程师和研究人员而言&a…...

Windows 11终极优化指南:用Win11Debloat一键清理系统,性能提升51%

Windows 11终极优化指南&#xff1a;用Win11Debloat一键清理系统&#xff0c;性能提升51% 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other chang…...