最新消息:学生作文网,您身边的作文指导专家!

surface系统锁定怎么办 surface 驱动器被锁定

写作指导 zuowen 2浏览

【 – 写作指导】

篇一:《Surface可以用到的81个小技巧分享》

Surface可以用到的81个小技巧分享

截屏

平板上面的WIN键+(音量减键)。按住win键,然后按下音量减键,屏幕会暗一下,这表示截图成功

1. 边角热区

新版Win8取消了开始菜单,但用鼠标点击左下角时仍可进入Metro界面,其实剩余的几个角也都有着类似功用。比如左上角代表在打开的Metro应用间循环切换、右上角代表可以一键激活Charm工具栏、左下角是Metro与传统桌面的切换键,至于右下角则表示将所有已打开程序最小化(Metro界面下代表全局展示Metro分组)。

2. 程序关闭

我们知道Metro应用是没有关闭按钮的,当系统从一个应用切换到另一个应用时,Win8会将其自动“挂起”。虽说挂起状态除了少许的内存占用,对于CPU及网络带宽毫无消耗,但很多人还是不习惯“悬挂”过多的Metro进程。

消费者预览版允许关闭Metro应用,方法是进入应用切换栏右击关闭目标应用。当然你也可以利用Win7时代的“土法”,直接借助任务管理器搞定它!

3. 一键Metro

Metro是Win8中的最大亮点,但你知道有几种办法可以快速进入Metro界面吗?首先也是最简单的,就是直接点击桌面左下角,其次键盘上的Win键也是一个不错的选择,再者通过Charm中的“开始”图标也能达到同样目的。

注:ESC键、Win键也可用作由Metro退回传统界面的快捷键。

4. “开始菜单”

很多人都知道将鼠标悬停到桌面左下角会激活一个缩略图标,点击即可进入Metro界面。但你也许不知道,如果在这个地方右击鼠标,还会激活另一个隐藏菜单——一个酷似旧版“开始菜单”的小菜单。

此外Win+X也能达到同样的目的,别忘了呀。

5. 一键锁屏

临时离开电脑的时候很多很多,怎样才能避免别人乱动自己的文件呢?当然你可以点击右上角头像→“锁定”(Metro界面下),但一个更简单的方法是直接按下——Ctrl+L。 注:该快捷键可以在传统界面下生效。

6. 程序卸载

控制面板找卸载,这是十几年的老习惯了,Win8也能这样操作。但如果仔细观察你会发现,其实Metro界面中便内置了程序卸载,使用时只需右击要处理的程序选择“卸载”按钮即可。而且这项技巧不仅适用传统程序,Metro应用也没问题。

7. 快速关机

一直以来Win8的关机都很让人头疼,由于被设计在一个二级菜单下,很多新用户都找不到关机按钮。快捷键有时是解决此类问题的良方,比如Metro界面下可以通过Win+I,传统界面下可以借助Alt+F4,然而最绝的其实是使用“电源管理”(通过“设置搜索→power→更改电源按钮的功能”打开)将电源按钮设为关机,到时只要潇洒地按动一下关机键就可以了。

8. 快速搜索

Metro界面支持直接关键字搜索,这是很多人都知道的功能。但是Win8却硬生生将其分成“应用”、“设置”、“文件”三个子入口,每次搜索默认查找“应用”,其他结果则需要用户手工切换。其实这三个入口分别对应有不同的快捷键,比如“应用”对应的是Win+Q、“设置”对应的是Win+W、“文件”则对应了Win+F,需要哪个直接按下相应的快捷键,远

比之前的手工切换方便得多。

9. 磁贴整理

时间久了Metro下的图标会越来越多,怎样才能将它们井井有条呢?其实在Win8中,磁贴可以方便地移动和定位,比如你可以拖拽一个磁贴到另一个磁贴组中,右击磁贴完成隐藏或者大小调整,此外也可拖拽磁贴到分组与分组间组建一个新分组。

如果点击Metro右下角的缩放按钮,也可以对磁贴分组进行管理,功能和具体方法与单个磁贴无异。

10. 输入法切换

也许你已经习惯了“Ctrl+Shift”切换键盘布局、“Ctrl+空格”切换键盘语言,但这两种方法到了Win8中似乎都不那么好用了。不妨试试“Win+空格”吧,看一看是不是很方便了。 注:使用“Win+空格”切换到微软拼音后,还可利用“Shift”键继续在中文与英文模式间来回切换。

11. 任务切换

我们知道将鼠标悬停在桌面左上角或左下角时,都能激活任务切换栏。但由于中途需要短暂停顿一下,因此这并不是最高效的办法。其实Win+TAB和上面的操作具有同样作用,使用起来却更方便。

12. IE启动

Metro版IE不支持Plugin-in,于是还有不少网友青睐程序版IE。不过每次都要→传统桌面→双击IE是不是很麻烦?那么更简单的一个办法是——直接按下Win+1就行(Metro、传统界面都适合~)

注:该快捷键的原理是启动Win8任务栏的第一个项目,由于默认情况下IE正是任务栏的第一个项目,所以我们则可以借此完成IE的快速启动。

13. 无密码登录

Win8支持网络账户,但如果你的电脑就是在家放着,实在没必要每次都去输入登录密码。其实Win8同样可以像Win7一样,实现指定帐户的自动登录。方法是在“运行”框内输入“netplwiz”,选中要使用的帐户名,接着取消弹出对话框中的“要使用本计算机,用户必须输入用户名和密码”复选框,向Win8提供好该账户的密码即可。

14. 按a~z查找应用

之前咱们说过,Win8可以利用Win+Q搜索想要的应用,但如果不知道关键字就麻烦了。其实我们完全可以让系统对应用分类自行排序,方法是在所有应用界面(右击Metro空白处选择“所有应用”)点击右下方按钮,这时Win8会自动按a~z对应用分类,汉字则会以软件厂商进行分组。如此一来,应用查找就显得简单多了。

15. Metro“我的电脑”

Metro界面本身并不包括“我的电脑”,这也就意味着如果我们打算访问一个文件时,必须首先进入传统桌面,然后再用双击打开的方法启动功能。其实在Win8中,每一个传统桌面中的图标都可以被固化到Metro界面里,方法是直接在图标上右击鼠标,选择“固定到‘开始’屏幕”就可以了。

16. 任务管理器变身

Win8的任务管理器很好用,但庞大的面板有时的确碍手。其实任务管理器还是可以“变身”的,比如双击图表变成专项图表风格,双击指标变成全局图表风格,或者在图表中右击选择“隐藏图形”来变成纯监控风格等等。配合原本的“置于顶层”,任务管理器瞬间变身监控软件。

17. 关机

这个问题单拿出来有点搞笑,但确实有些朋友不知道,Windows 8中将开始菜单更换为metro

界面,关机按钮也同样消失了,我们可以用一下几种方法实现关机:

A. Alt+F4:快捷键,Windows界面下按Alt+F4即可弹出关机菜单

B. Win+I:打开“设置”,选择电源按钮关机、睡眠等

C. 桌面建立快捷方式,桌面右键新建-快捷方式,关机输入shutdown.exe -s -t 00,重启则输入shutdown.exe -r -t 00 ,右键快捷方式属性,可更换显示图标

D. Metro界面添加关机按钮,上部内容中在桌面建立好关机快捷方式后,右键选择固定到“开始”屏幕即可在Metro界面中看到。

18.关闭Metro应用

A. 再打开的Metro程序中按Alt+F4,关闭程序。。。。。。Alt+F4果真乃极品神器

B. 鼠标移到界面上方,可以将鼠标移动至屏幕顶部,当鼠标箭头变成“小手”时,点住并向下拖拽至屏幕底部后松手即可。

19. 多任务切换

Windows 8中多任务的切换非常方便,将鼠标移动至屏幕左上方,即可出现后台首选应用的缩略图,点击即可切换,还可以鼠标下滑显示完整后台程序缩略图。

20.无处不在的搜索

毫无疑问Windows 8中的搜索更加强大,只需快捷键即可进行搜索,另外在Metro界面中可以直接输入搜索内容进行搜索

Win+Q:搜索“应用”

Win+F:搜索“文件”

Win+W:搜索“设置”

21.Charms边栏

Windows8中引入了Charms边栏,可将鼠标移到右下角即可在右侧弹出,也可以按快捷键Win+C弹出,会显示日期时间以及搜索、共享、设置等菜单,非常方便。

22. 快速启动任务栏程序

Windows8中沿用了Windows 7的诸多应用,比如任务栏上的操作依然可以沿用,将程序固定到任务栏后,按下Win+相应数字键快捷键即可快速启动。譬如IE10位第一个,按下Win+1即可启动。

23.任务栏文件夹改为打开计算机

任务栏上锁定的文件夹默认打开是“库”,很多朋友会不习惯,同样我们可以修改,任务栏文件夹处右键资源管理器属性,目标一栏替换为“%windir%\explorer.exe ,”即可,不含引号包括逗号,逗号前有空格,然后应用即可。

24.调整自带输入法输入框大小

右下角输入法处右键打开输入法输入选项,外观选项卡中修改外观中字体大小,确定即可。

25.MetroIE打开桌面IE

这是由于设置默认浏览器引起的,将IE设置为默认浏览器即可恢复Metro界面IE打开为Metro版IE。

26.MetroIE网页使用桌面版IE打开

在MetroIE中浏览网页时,如果想通过桌面浏览器打开当前网页,点击右下角工具按钮选择“在桌面上查看”即可

27.更换用户头像

通过MicrosoftID登录后可能默认头像比较小,显示会模糊,可以在Metro设置面板修改大分辨率头像,同样也可以额修改锁定屏幕壁纸和开始屏幕配色(更改头像可以在Metro界面右上角头像处点击更改头像进入)

28.出去“开始”屏幕无用按钮

安装程序后,“开始”屏幕中会有很多不需要的快捷方式(其实我们只想留下一个程序就好了)其他的无用快捷方式可以通过批量右键选中后点击左下方从“开始”屏幕取消固定即可删除(仍可通过所有程序中找到删除的快捷方式)

29.Windows8中的MSE

安装完Windows 8后大家再去安装MSE的话是无法安装的,这是由于Windows 8中已经自带了Windows Defender,包含MSE功能,所以是没有必要再安装的,当然也可以安装其他杀毒软件增强防护,是没有冲突的。

30.“开始“屏幕分组

开始屏幕中也可以为各组命名,操作方法很简单,在“开始“屏幕右下方放大镜处点击最小化,然后右键任意一组点击更改命名即可,修改成功后即可在”开始“屏幕中看到。

31.资源管理器中的Robbin

Windows 8中的资源管理器菜单界面已经改为Robbin界面,我们之前在Office中也看到过,可以隐藏或显示,双击选项卡名称即可隐藏,显示更多内容(鼠标点击时可以弹出)

32.锁屏

启动之后,用户将首先看到Windows 8的锁屏界面,每当系统启动、恢复或登录的时候,锁屏就会出现。如果您使用的是触摸屏设备,那么用手指一扫然后输入密码就可以登录系统。如果不是触摸屏设备,那么就用鼠标点击之后就能够登录系统。

33.Metro主屏

当用户登录Windows 8系统之后,新的Metro启动屏幕就会出现,上面铺满了瓦片式的程序。当然了,如果您不喜欢某个应用程序,您也可以右击将其移除,然后按照自己的喜好重新排列应用程序的位置。{surface系统锁定怎么办}.

34.简化的开始菜单

Metro用户界面具备自己的开始菜单,其中包含一些简单的选项,如设置、设备、共享和搜索等。

35.运行任何程序

按住Windows键或者是Win+F就可以打来搜索窗口,键入程序的名称就可以打开指定的应用程序。

36.任务切换

Metro屏幕不具备任务栏,因此用户很容易会找不到那些运行的应用程序,这种情况下,用户只需按住Alt+Tab键就能够查看正在运行的应用程序,而按住Win+Tab键则能够自一个正在运行的应用程序切换到下一个应用程序。

37.关闭应用程序

Metro应用程序不包含一个“关闭”按钮,其实这是微软的故意设计,当运行另外一个应用程序的时候,当前的应用程序就会被挂起,当资源不足时,系统就会自动关闭这个应用程序。 当然了,用户也可以手动关闭应用程序,按住Ctrl+Alt+Esc就可打开任务管理器,右击多余的应用程序选择终止任务即可。

38.关闭系统

如果想要在Metro界面中关闭系统,那么只需调出设置对话框,点击电源按钮,然后关闭即可。当然了,如果处于桌面状态,您也可以按住Alt+F4,然后选择关闭、重启、切换用户或注销等选项。

39.Metro Internet Explorer

点击IE的Metro窗格,一个全屏版的浏览器就会出现,它是一个触摸友好的浏览器,鼠标

用户当然也有一些优势:右击即可将网站固定到Metro屏幕中,例如打开一个新的浏览器标签或切换到旧标签。

当然了,如果您喜爱的是旧式IE界面,那么只需在桌面中启动IE浏览器即可,或者是按住Windows键再按1即可。

40.多屏显示

正常情况下,Metro应用程序是全屏运行的,但是如果您运行的是触摸屏设备,那么也可同时查看两个应用程序。

41.查询天气

一般情况下,很多绑定的Metro应用程序都能够通过右击重新配置。默认情况下,天气应用程序是显示加利福尼亚州阿纳海姆市的天气,如果用户想要查看本地天气的话,只需右击选择添加城市,键入距离最近的城市名称即可。

42.拼写检查

Metro应用程序都具备拼写检查功能,与Office相似。一旦出现错误,违规词下方就会显示一个红色波浪下划线,右击就可看到建议的替代字词,用户还可以将这些字词添加到自己的字典中。

43.以管理员身份运行

有些应用程序只有在管理员权限下方可运行,只需右击应用程序,点击“高级”,选择“以管理员身份运行”选项即可。

44.休眠或睡眠

默认情况下,休眠或睡眠选项是不会出现在 Windows 8关闭对话框中的,但是用户可以恢复它们。

启动电源选项程序(powercfg.cpl),点击左侧窗格中的“选择电源按钮运行状况”,如果看到“更改当前不可用”的链接,点击它,选择“休眠或睡眠”选项,点击保存设置,此后“休眠或睡眠”选项就会出现在关闭对话框中。

45.自动登录

厌倦手动登录Windows 8?下面就是自动登录Windows 8的方法:按住Windows键,按R,键入netplwiz然后按回车键启动用户账户对话框。清除“用户必须输入用户名和密码才能使用这台计算机”复选框,点击“确定”即可。

46.Windows 8中的Windows快捷键

虽然Windows Metro用户界面主要是针对触摸屏设计的,但是它支持大多数的旧Windows快捷键。

Win + C :显示Charms,如设置、设备、共享和搜索等选项;

Win + D:启动桌面;

Win + E:启动资源管理器;

Win + F:打开搜索;

Win + I:打开设置;

Win + P:将您的显示器切换到第二显示器或投影仪;

Win + R:打开运行框;

Win + U:打开轻松访问中心;

Win + W:搜索您的系统设置;

Win + Z:当打开一个全屏Metro应用程序时,显示右击上下文菜单;

Win + :放大;

Win —:缩小;

47.快速启动应用程序

篇二:《Surface 屏幕旋转疑难解答》

Surface 屏幕旋转疑难解答

Surface 设计为随着您的旋转而自动旋转显示屏,这样您在屏幕上看到的内容始终正面朝上。如果您的 Surface 上的显示屏未自动旋转,请按顺序尝试以下解决方法。

解决方法 5:运行疑难解答

解决方法 1:断开与您的 Surface 键盘盖和任何外部显示器的连接 Surface 设计为当您在 Surface 键盘盖上打字或使用外部显示器时横向显示屏幕。 步骤 1:

步骤 2: 断开 Surface 键盘盖和任何外部显示器,查看是否它们阻止了您的屏幕自动旋转。 查看当您旋转 Surface 时,Surface 显示屏是否自动旋转。 如果屏幕仍无法自动旋转,请尝试“解决方法 2”。

解决方法 2:检查自动旋转设置

如果屏幕无法自动旋转,自动旋转设置可能被锁定在一个位置。以下是解锁的方法: 步骤 1:

步骤 2: 从屏幕右边缘向左轻扫,然后点击“设置”。 (如果您使用鼠标,请指向屏幕的右上角,将鼠标指针下移,然后单击“设置”。) 点击或单击“屏幕”,然后点击或单击亮度滑块上方的屏幕图标以解锁自动旋转。

当自动旋转锁定后,屏幕图标将包括一个挂锁。当您更改 Surface 的方向时,屏

幕将不会旋转。

步骤 3:

步骤 4:

附注{surface系统锁定怎么办}.

重新连接 Surface 键盘盖、将其向后折叠,然后查看当您旋转 Surface 时 Surface 显示屏是否自动旋转。 当连接的 Surface 键盘盖在键入位置时,Surface 上的屏幕旋转将自动锁定。 除非 Surface 上的屏幕旋转设置已锁定,否则将 Surface 键盘盖向后折叠将允许屏幕自动旋转。 如果在连接 Surface 键盘盖或连接外部显示器时 Surface 屏幕纵向显示,则屏幕会自动旋转为横向,

即便自动旋转已锁定也会如此。

如果解锁自动旋转后仍然不能自动旋转,请尝试“解决方法 3”。

解决方法 3:关闭您的 Surface 并重新打开

从屏幕右边缘向左轻扫,然后点击“设置”。

(如果您使用鼠标,请指向屏幕的右上角,将鼠标指针下移,然后单击“设置”。)

点击或单击“电源”,然后点击或单击“关机”。

按 Surface 上的电源按钮重新开机并登录到 Windows。 步骤 1: 步骤 2: 步骤 3:

如果关闭并重新打开 Surface 不起作用,请尝试“解决方法 4 ”。

解决方法 4:安装最新更新

安装 Microsoft Surface 的最新更新(包括 Windows 和加速度计及其他传感器的更新)可能有助于解决旋转问题。请参阅安装 Surface 和 Windows 更新。

如果安装更新后仍然无法自动旋转,请转到“解决方法 5”。

解决方法 5:运行疑难解答

打开传感器疑难解答。在“文件下载”对话框中,点击或单击“打开”,然后按照屏幕提示操作。 如果运行疑难解答未能解决问题,请转到“解决方法 6”。

解决方法 6:还原或恢复 Surface

如果仍然存在自动旋转问题,请按顺序执行以下操作:还原或恢复 Surface。

还原 Surface

还原 Surface 可以撤销可能引起问题的最近系统更改。还原 Surface 不会更改您的个人文件,但可能会删除最近安装的应用和驱动程序。

注意

还原不可用于 Surface 平板电脑或 Surface 2 平板电脑。

如果还原 Surface 不能解决问题,请恢复 Surface。

恢复 Surface

恢复 Surface 会重新安装 Windows,同时保留您的个人文件、设置、Surface 预装的应用及从 Windows 应用商店安装的应用。安装在 Surface Pro 中文版/专业版上的桌面应用将被删除,但您可以在恢复 Surface 后重新安装。

注意

{surface系统锁定怎么办}.

如果您将 Surface Pro 中文版/专业版从 Windows 8 更新到了 Windows 8.1,恢复后会重新安装 Windows 8(而不是 Windows 8.1)和 Surface Pro 中文版/专业版预装的应用。其他应用和设置将被删除。恢复完成后可以重新安装。

有关操作的详细信息,请参阅:

还原或恢复后,是否仍然存在屏幕旋转问题?有关更多帮助,请联系我们。

篇三:《Android Surface系统的实现》

Android Surface系统的实现

梁铁

杭州海康威视数字技术股份有限公司 浙江省杭州市310052

摘要:

安卓的图形显示系统负责应用用户界面窗口的绘制,它是安卓系统中一个重要且复杂的模块。窗口管理服务和图形混合服务是图形显示系统的核心服务,通过分析二者的工作流程对了解安卓图形显示系统起到很大的帮助。

关键词:

安卓系统、图形显示系统、图形混合系统、窗口管理服务

Android Surface Realization

Liangtie

Hikvision Digital Technology Co., Ltd Hangzhou,Zhejiang Province, 310052

Abstract:

Android surface system is responsible for drawing the User Interface Window of android application, it’s a very complicate and important module in the android system. WindowManagerService and SurfaceFlinger service are the key services in the Android Surface System. To analyze these services work flow is very important to understand the android surface system.

Keywords:

Android、Surface、SurfaceFlinger、WindowManagerService

作者简介:梁铁、1980、 男、工程师/工学硕士、主要研究方向:嵌入式系统视频编解码实现。

正文:

Android图形显示

Android应用通常由一个或多个基本组件组成,Activity是负责应用与用户交互的组件,内部包括Window窗口。图1是Android应用和Surface系统交互的流程框图,通过一系列的操作步骤,对Activity和WMS、SurfaceFlinger之间的关系进行初步的展示

1) 系统启动一个新的Activity。

2) WMS为Activity创建一个Phone Window类型的窗口, 并注册到WMS。 3) SurfaceFlinger为Surface分配资源,通过共享内存的方式,与应用共同操作

Surface数据缓冲区。

4) 应用在Surface上绘制UI窗口的全部视图。

5) SurfaceFlinger把全部应用的Surface图形数据混合起来进行显示输出。

通过对一个Android应用Activity

图形显示流程的分析,对掌握Surface架构的运行机制,有很大的帮助。

图1 Surface流程示意图

作者简介:梁铁、1980、 男、工程师/工学硕士、主要研究方向:嵌入式系统视频编解码实现。

WindowManagerService (WMS)

WMS是由System_Server进程启动的,负责应用程序窗口的创建、控制和管理等工作,并完成系统消息的收集和分发工作。如图2所示。应用请求创建窗口时,和应用直接交互的是WindowManagerImpl对象,它会创建一个ViewRoot类负责与WMS的交互。

IWindowSession和IWindow是标准的aidl接口,用于ViewRoot和WMS之间的交互。其中,IWindowSession接口用于ViewRoot与WMS内部类Session进行跨进程通信。IWindow接口用于WMS调用ViewRoot内部的W 类,完成派发按键消息等功能。

WMS会创建一个SurfaceComposerClient对象与窗口对应,它是与SurfaceFlinger服务进行交互的接口。

图2. Activity与WMS交互示意图

SurfaceFlinger

SurfaceFlinger也是由System_Server进程启动系统服务进程,它负责分配和管理Surface图形显示系统需要的资源,并完成SurfaceCompose图形混合的工作用于显示。

如图3所示,SurfaceFlinger服务创建Layer对象对应Activity的Surface,并

作者简介:梁铁、1980、 男、工程师/工学硕士、主要研究方向:嵌入式系统视频编解码实现。

按照Z轴顺序进行管理。SurfaceFlinger通过调用Android定义的显示设备HAL层DisplayHardware,为Layer分配GraphicBuffer显示缓冲区。一般为一个Layer分配两个GraphicBuffer,方便进行PageFlipping显示操作(FrontBuf用于输出,BackBuf用于绘制)。

SurfaceFlinger服务为每个SurfaceComposerClient创建Client类对象。Client对象里面包括一个创建在共享缓冲区上的SharedClient对象。Activity和SurfaceFlinger通过这个对象实现对GraphicsBuffer的访问同步。

SharedClient有31个SharedBufStack对用来管理GraphicBuffer,因此每个Activity最多可以支持31个Surface图层显示。

图3. SurfaceFlinger显示层管理{surface系统锁定怎么办}.

Activity Surface视图绘制

应用通过调用以下三步骤,完成UI窗口视图的绘制:

1) LockCanvas,获取并锁定Surface对应的GraphicsBuf中的BackBuffer,与Canvas

绑定,用来存储Surface图形内容。

2) 图形绘制。Canvas类封装了图形绘制函数,通过调用这些功能函数可以完成

视图绘制的工作。若系统支持GPU硬件加速,则使用GPU完成视图绘制工作,否则ARM完成相关的工作。

作者简介:梁铁、1980、 男、工程师/工学硕士、主要研究方向:嵌入式系统视频编解码实现。

3) unlockCanvasAndPost,解除BackBuffer锁定,完成PageFlip(BackBuffer和

FrontBuffer交换), 发送信号给SurfaceFlinger,进行SurfaceCompose工作。

图4. Surface绘制调用过程图

SurfaceFlinger Surface Compose

SurfaceFlinger系统服务进行Surface Compose的工作流程,如图5所示。 1. 等待事务处理或等待重绘事件。

2. 如果有事务请求,则进行事务处理。比如窗口90度旋转操作等。

3. 各个Layer从GraphicBuffer中的FrontBuffer中获取新数据,并生成一张

OpenGL中的纹理信息。

4. 按照Zorder设置顺序,利用OpenGL接口绘制每个LAYER的纹理信息。 5. 遍历各个显示层的finishPageFlip函数,释放FrontBuffer。 6. Surface Compose后的图像用来显示。

作者简介:梁铁、1980、 男、工程师/工学硕士、主要研究方向:嵌入式系统视频编解码实现。

篇四:《详解AndroidSurface系统》

深入浅出 详解Android Surface系统 2011-05-05 14:44 Innost CSDN

字号:T |

T

本文详细介绍了Android中的Surface系统,采用情景分析的办法,详解了何为SurfaceFlinger,以及SurfaceFlinger的工作流程,以Activity函数调用为切入点来研究SurfaceFlinger。

AD:2014WOT全球软件技术峰会北京站 课程视频发布

一 目的

本篇文章的目的就是为了讲清楚Android中的Surface系统,大家耳熟能详的SurfaceFlinger到底是个什么东西,它的工作流程又是怎样的。当然,鉴于SurfaceFlinger的复杂性,我们依然将采用情景分析的办法,找到合适的切入点。

一个Activity是怎么在屏幕上显示出来的呢?我将首先把这个说清楚。

接着我们把其中的关键调用抽象在Native层,以这些函数调用为切入点来研究SurfaceFlinger。好了,开始我们的征途吧。

二 Activity是如何显示的

最初的想法就是,Activity获得一块显存,然后在上面绘图,最后交给设备去显示。这个道理是没错,但是Android的SurfaceFlinger是在System Server进程中创建的,Activity一般另有线程,这之间是如何…如何挂上关系的呢?我可以先提前告诉大家,这个过程还比较复杂。

好吧,我们从Activity最初的启动开始。代码在

framework/base/core/java/android/app/ActivityThread.java中,这里有个函数叫

handleLaunchActivity。

[—->ActivityThread::handleLaunchActivity()]

1. private final void handleLaunchActivity(ActivityRecord r, Intent customIntent) {

2.

3. Activity a = performLaunchActivity(r, customIntent);

4.

5.

6.

7. if (a != null) {

8.

9. r.createdConfig = new Configuration(mConfiguration);

10.

11. Bundle oldState = r.state;

12.

13. handleResumeActivity(r.token, false, r.isForward);

14.

15. —->调用handleResumeActivity

16.

17. }

handleLaunchActivity中会调用handleResumeActivity。

[—>ActivityThread::handleResumeActivity]

1. final void handleResumeActivity(IBinder token, boolean clearHide, boolean isForwa

rd) {

2.

3. boolean willBeVisible = !a.mStartedActivity;

4.

5.

6.

7. if (r.window == null

转载请注明:中小学优秀作文大全_作文模板_写作指导_范文大全 » surface系统锁定怎么办 surface 驱动器被锁定