Andoird WindowManager管理Window的流程

作者&投稿:连独 (若有异议请与网页底部的电邮联系)
~ 分析Windowmanager如何管理window的流程。

添加、更新、删除一个Window:

参数说明:
1、flag,控制Window的显示特性,参数很多可自行查询API,常用如下
FLAG_NOT_TOUCH_MODAL:Window区域内的点击事件自己处理,之外的传递给底层Window,通常打开此标记
FLAG_NOT_FOCUSALE:不需要焦点,直接传递到底层Window
FLAG_SHOW_WHEN_LOCKED:顾名思义,显示在锁屏上
2、type,三种类型。Window是分层的
应用Window:层级1-99,对应一个activity
子Window:层级1000-1999,需要在特定的父Window中,比如Dialog
系统Window:层级2000-2999,需添加权限SYSTEM_ALERT_WINDOW,比如状态栏

ViewManager只是个interface,搜索源码,实现类为WindowManagerImpl

然后交给代理类mGlobal即WindowManagerGlobal

mViews,mRoots,mParams是三个ArrayList,用来保存所有window对应的view、ViewRootImpl和布局参数
ViewRootImpl:WindowManager创建它来管理view
最后通过ViewRootImpl.setView来设置view

然后是mWindowSession.addToDisplay,其实现是Session.addToDisplay

所以其实是WindowManagerService的addWindow,这里addWindow就是WindowManagerService把window如何布置到屏幕上的具体深入细节了,就不跟了。

WindowManagerGlobal的removeView调用



ViewRootImpl.die

mHandler.sendEmptyMessage(MSG_DIE);延时调用,最终还是会直接调用doDie();

doRemoveView,刷新mViews,mRoots,mParams数据
dispatchDetachedFromWindow中主要行为三点:

WindowManagerGlobal的updateViewLayout

ViewRootImpl.setLayoutParams刷新LayoutParams

mTraversalRunnable调用performTraversals,这个就是所有view的绘制过程了,重绘时会调用relayoutWindow然后调用mWindowSession.relayout,即WindowManagerService的relayoutWindow方法

Windowmanager通过ViewRootImpl来添加、更新和删除window,最终的实现都是WindowmanagerService具体实现。本文目的也是掌握Windowmanager管理window的流程。


惠农区13266878207: 通过老毛桃进入界面装win7系统 可是安装到选择磁盘界面时 总是提示 安装程序无法创建新的系统分区、、、 -
舌耿祛风: 老毛桃PE里有windows安装助手(win&man),使用这个工具安装win7简单快捷,并且没有你说的那个烦恼,安装时选择win7安装光盘里的install.wim文件,选择安装的主分区号(选择哪个主分区安装就必须激活哪个分区【针对双系统而言】),然后一直下一步就OK 了.祝你成功.

惠农区13266878207: 如何用PE系统中的Win$Man工具来安装Win7或WinXP? -
舌耿祛风: Win$Man下载 Windows安装工具安装原版的Windows XP最简单,笔者第一个想到的是“Win$Man”这个工具(在PE里都能找到),图形化界面,简单易用,目前支持安装Windows XP、Vista、Win7、Win8、2000、2003、2008都等多个系...

惠农区13266878207: WIN$Man整合磁盘控制器驱动,这个功能怎么用,这个是什么意思,我是win7用的WIN$Man做双系统xp. -
舌耿祛风: 那个东东你根本不用点,除了一开始(系统安装在哪个分区的窗口)你选择一下,并且指定以这个分区作为引导分区,其余的按软件默认即可.另:如果不增加启动菜单的话,你激活哪个分区哪个分区的系统就会开机启动,要想设一个启动菜单的话,就用PE里的系统启动修复工具新建一个启动菜单.希望可以帮到你.

惠农区13266878207: 用PE引导安装WIN7时出现windows无法更新计算机的启动配置.安装无法继续. -
舌耿祛风: 一、你这个是笔记本吧 有些笔记本重装系统就会出现这样的问题 解决方法 重新格式化硬盘 重新分区 然后再安装系统 二、你换个系统盘或者镜像文件 三、找个硬盘检测软件(网上多的很)检测下你的C盘

惠农区13266878207: 我用Win$Man安装的 windows7和windows8都不成功. 重启后显示windows无法更新计算机的启动配置,??? -
舌耿祛风: 很简单,再尝试一下GHOST XP,如果能正常启动说明硬件没任何问题.那么安装WIN7或WIN8时将硬盘C格干净NTFS格式,再安装.如果在其它计算机上能够正常安装,那么在你的计算机也应该是没有问题的.祝好运.

惠农区13266878207: 华硕A450J 装win7后无法从硬盘启动 -
舌耿祛风: 您好 尊敬的华硕用户 建议您进入bios确认Launch CSM和Secure Boot Control如下设置正确:Boot->Launch CSM->Enabled Security->Secure Boot Control->Disabled 如果CSM无法设置,建议您首先设置Secure Boot Control之后保存设置退出bios,然后重新进入设置CSM.PE中检测不到硬盘一般是PE的版本问题所致,建议您使用最新版本的PE尝试或者其他安装工具尝试,如果依然无法安装建议您直接刻录镜像,而不是使用PE安装尝试是否能够安装系统.

惠农区13266878207: 在U盘里怎样安装win8系统? -
舌耿祛风: 1,安装前准备: 1). win8 iso 系统镜像文件,32位、64位都可以,看自己需要. 2) 下载Win$Man(Windows系统安装工具) 2.0 正式免安装版. 3)准备 一个 16GB 以上 USB 存储设备,可以是 U 盘,也可以是移动硬盘,下面开始安装. 2,先...

惠农区13266878207: win7镜像解压出来只有wim文件怎么用PE安装系统 我戳下了半天解压出来没有GHO文件 求解释 -
舌耿祛风: 三种方法 第一种是用win7安装器 比如nt6installer(这个可以在现有系统下使用)或者win$man(只能在pe中使用) 需要解压iso 选好版本一直点下一步就行 第二种是先格式化要安装的分区 用wim工具 比如wimtool、7zip、imagex 解开wim文件的最后一个卷(这个卷是旗舰版 其他版本不能用此方法)释放到那个分区 给分区加启动标记 重启 第三种是解压iso到非安装盘根目录 加启动标记 从这个盘重启

惠农区13266878207: 用U盘的 Win$Man来安装Win7 ,重启后错误,也进不了PE -
舌耿祛风: 下载老毛桃制作优盘启动后把系统iso解压到优盘GHO文件夹即可,重启电脑长按esc选择优盘进入PE,找到优盘GHO文件夹有个setup.exe

惠农区13266878207: 如何用用U盘装Win7系统? -
舌耿祛风: 第一:制作一个可以支持U盘启动的 Win7 PE 启动盘 第二:在笔记本/台式电脑里设置U盘启动 第三:用虚拟光驱加载Win7镜像 第四:用Win$Man安装Win7 接下来,那就是等待系统安装完成、安装驱动,安装常用软件,同步自己的数据等等琐碎事.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网