位置: 编程技术 - 正文

Android中与ViewRoot相关的一些概念(android.view.window.addflags)

编辑:rootadmin

推荐整理分享Android中与ViewRoot相关的一些概念(android.view.window.addflags),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android viewrootimpl,android viewroot,android中的view,android viewroot,Android中与模态窗体类似的属性,android view和viewgroup,Android中与左边控件有间隔,Android中与模态窗体的类似的,内容如对您有帮助,希望把文章链接给更多的朋友!

Android中与ViewRoot相关的一些概念(android.view.window.addflags)

1、View和ViewRoot

ViewRoot从名称上来理解&#;乎是“View树的根”,这很容易让人产生误解。因为ViewRoot并不属于View树的一份子。从源码实现上来看,ViewRoot和View对象并没有任何“血缘”关系,它既非View的子类,也非View的父类。ViewRoot可以被理解为“View树的管理者”——它有一个mView成员变量,指向的是它所管理的View树的根。

咱们看下下面的布局代码:上面的布局代码只是一份任意的布局代码,这里主要看下其结构,该布局代码的View结构可以描如下:在该布局中,ViewRoot中的mView成员变量指向的就是它所管理的View树的根,即上图中的LinearLayout:test元素。ViewRoot的核心任务就是与WindowManagerService进行通信。2、Activity和Window的关系我们知道Activity是支持显示UI的,那么它是否直接管理view树或者ViewRoot呢?答案时否定的,Activity并没有与这两者产生直接的联系,因为这中间还有一个被称为“Window”的对象。大家可以在Activity的源码中找到如下代码:private Window mWindow;Window的字面意思是"窗口",这很好地解释了它存在的意义。Window是基类,根据不同的产品可以衍生出不同的子类——具体则是由系统在Activity.attach中调用PolicyManager.makeNewWindow决定的,目前版本的Android系统默认生成的都是PhoneWindo。3、Window和WindowManagerImpl的关系在Android源码中以“Window”开头的类有不少,如Window,WindowManager,WindowManagerImpl等,为什么需要这么多相&#;的类呢?先来看Window,它是面向Activity的,表示"UI界面的外框";而“框里面”具体的东西包括布局和内容等,是由具体的Window子类,如PhoneWindow来规划的。Window的另一层含义是要与WindowManagerService进行通信,但它并没有直接在自身实现这一功能。原因是:一个应用程序中很可能存在多个Window。如果它们都单独与WMS通信,那么既浪费资源,又会造成管理的混乱。换句话说,它们需要统一的管理。于是就有了WindowManager,它作为Window的成员变量mWindowManager存在。这个WindowManager是一个接口类,其真正的实现是WindowManagerImpl,后者同时也是整个应用程序中所有Window的管理者。因而WindowManager与WindowManagerImpl的关系有点类&#;于“地方与中央”:地方为实施中央的“政策”提供了一个接口,然后汇总到中央进行管理。在Window的源码中与mWindowMager有关的代码有如下几句:private WindowManager mWindowManager;mWindowManager = ((WindowManagerImpl)wm).createLocalWindowManager(this);然后我们去WindowManagerImpl的代码中去查看createLocalWindowManager方法的代码,代码如下:从这几处代码,大家可以看到Window类中的mWindowManger引用的其实是WindowManagerImpl的实例。在WindowMangerImpl内部,存在3个全局变量:(下图中的源码是2.3.5中的)它们分别用于表示View树的根节点、ViewRoot以及Window的属性。由此也可以看出,一个进程中不仅有一个ViewRoot;而Activity与ViewRoot则是一对一的关系。自Android4.3开始对此做了修改,WindowManagerImpl不再直接存储上述三个数组变量,而是由一个称为“WindowMangerGlobal”的类统一管理。5、ViewRoot和WindowManagerService的关系每一个ViewRootImpl内部,都有一个全局变量static IWindowSession sWindowSession;这个变量用于ViewRoot到WMS的连接,它是ViewRoot利用WMS的openSession()接口来创建得到的。在此基础上,ViewRoot也会通过IWindowSession.add()方法提供一个IWindow对象——从而让WMS也可以通过这个IBinder对象来与ViewRoot进行双向通信。这里突然间冒出一个ViewRootImpl类,其实ViewRoot与ViewRootImpl的功能是一样的,只不过是Android不同版本的不同称呼。不信看下图:既然说到这个图了,那么就在这里给大家推荐一个可以在线看Android源码的网站:

Android FragmentTransaction在不同版本下的奇怪问题 目前在做的一款APP,用到了一个布局块中的Fragment的切换,其中一个按钮按下后的事件如下:btnTranslate.setOnClickListener(newView.OnClickListener(){@Overridepublicvoido

android 重启、开机、关机的广播 有些时候我们需要apk开机就启动,能够检测到手机的重启、关机、开机、这时候就需要用到android的broadcast机制了。重启、开机、关机的广播action分别是

复杂JSON解析(GSON+Vallery)网上很难找到这么复杂的JSON哦 研究GSON花费了我一天的时间,期间出现了各种问题,第一次可以理解嘛,不过还好在安卓开发交流群几位大神的帮助和我极大的耐心一下终于搞出来

标签: android.view.window.addflags

本文链接地址:https://www.jiuchutong.com/biancheng/382265.html 转载请保留说明!

上一篇:Eclipse出现java heap space解决方法(eclipse出现an error has occurred)

下一篇:android 重启、开机、关机的广播(android 重启app)

  • 民非 企业所得税
  • 采购暂估的处理方式
  • 年应税销售额是利润表中的营业收入吗
  • 分支机构设立当年是否需要就地预缴企业所得税?
  • 对方开给我的专票遗失了,让我上传发票
  • 工资不纳税项目
  • 工会经费个人绩效计入缴费基数吗
  • 2019未达起征点免税分录
  • 资产负债表中存货项目金额怎么算
  • 递延所得税当期发生额
  • 直接减免的增值税属于财政性资金吗
  • 应付账款扣款怎么做账
  • 法人购买设备怎么入账
  • 不涉及税收
  • 开旅游公司有补贴吗
  • 一般纳税人转小规模怎么办理
  • 样品开发费用怎么记账
  • 委托贷款利息收入怎么开发票
  • 产权交易费用
  • 个体工商户网上报税流程
  • 金融企业哪些呆账损失可以在税前扣除?
  • 企业所得税法的主要内容
  • 资本的不同形态
  • 购买承兑汇票怎么做账
  • 腾讯手游助手如何隐藏鼠标
  • 王者荣耀如何更改战区
  • 动态投资回收期名词解释
  • 100%控股有什么风险
  • 因质量问题退货和收回的药品应当
  • 不得抵扣的进项税额计入哪里
  • 发票开出后对方不付款
  • 应收账款保理的主要意图在于
  • PHP:imagecreatefrompng()的用法_GD库图像处理函数
  • 其他收益如何核算成本
  • threejs怎么用
  • 二手车征税税率减按多少税
  • 货物名称和发票上的不一致
  • 一般纳税人设备安装税率
  • 契税计入会计利润总额吗
  • MicrosoftSQLserver2014
  • 核定征收企业注册
  • 按工资申报的工龄怎么算
  • 退还押金的会计分录怎么写
  • 收到红字发票如何入账
  • 同一控制下企业合并和非同一控制下企业合并的区别
  • 给员工买保险的好处和坏处
  • 财务报表是指的什么内容
  • 劳务费怎么做账务处理
  • 公司给买员工保险
  • 出口企业样品收入分录
  • 商家说垫付运费
  • 房产置换怎么做
  • 没有发票会怎样
  • 进项税额增值税专用发票
  • 小规模收到专票可以当普票用吗
  • 更正申报所得税汇算清缴
  • 主营业务成本和管理费用的区别
  • 交通补贴属于工资薪金所得吗
  • 应收票据和应付票据的区别
  • 固定资产报废由谁审批
  • 简易征收能抵扣进项税吗
  • 什么是投资性房地产具体包括哪些内容
  • 管理会计与核算会计的区别
  • 股东权益净资产收益率计算公式
  • 工业企业辅助生产费用的分配方法
  • windows10安装教程u盘安装
  • win8自带软件
  • speedupmypc.exe - speedupmypc是什么进程
  • win8系统如何查看文件浏览痕迹记录
  • win7win8win10哪个流畅
  • linux shell命令大全
  • unity3d ik
  • python动态参数应用
  • js能实现的简单效果
  • python 面向对象 类
  • 英语流利说的简单介绍
  • 谈心谈话记录由谁填写
  • 公司欠税款,还不上,怎么办
  • 威海行风热线实时收听
  • 水资源税征收标准2023
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设