CN104731653B - 一种Android显示系统的软件绘制和硬件绘制动态切换方法 - Google Patents
一种Android显示系统的软件绘制和硬件绘制动态切换方法 Download PDFInfo
- Publication number
- CN104731653B CN104731653B CN201510146749.1A CN201510146749A CN104731653B CN 104731653 B CN104731653 B CN 104731653B CN 201510146749 A CN201510146749 A CN 201510146749A CN 104731653 B CN104731653 B CN 104731653B
- Authority
- CN
- China
- Prior art keywords
- drafting
- hardware
- mode
- software
- android
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明涉及android操作系统的显示框架,尤其是一种Android显示系统的软件绘制和硬件绘制动态切换方法,在现有Android的显示系统中,增加P31系统运行监控服务ROS以监测和收集系统运行的状态,然后根据这些状态来决定P4中使用的绘制方法;增加P32应用程序绘制控制接口ADI,该应用程序可以通过该接口强制设定自己绘制所使用的方式,并且通过该方式设定的优先级大于P31。本发明的Android显示系统的软件绘制和硬件绘制动态切换方法可以让一些老款的应用程序在众多的平台上运行的很流畅,用户体验性好;应用在绘制的过程中有很强的容错性,可以让配置较低的平台运行更多的应用程序。
Description
技术领域
本发明涉及android 操作系统的显示框架。具体来说,该发明是基于android的显示框架,提供一种可以动态切换android软件显示(使用CPU进行绘制)和硬件显示(使用GPU进行绘制)的方法。
背景技术
从Android 3.0开始,Android 2D的绘制流程就设计为支持硬件加速。有了该硬件加速,应用程序在绘制界面所进行的绘制操作都会使用硬件去渲染绘制,这样极大的优化了显示速度和用户体验。
硬件绘制特点是绘制速度快,界面流畅,用户体验好,但是消耗硬件资源,导致一些应用在低配置的设备上无法运行,另外硬件绘制无法满足所有的绘制方法(依赖于硬件提供的功能),导致部分应用在一些硬件能力差的机器上显示异常,甚至不能运行。
软件绘制的特点是绘制速度慢,界面不顺畅,但是对硬件的依赖较小,另外软件绘制的准确度和精确度高,绘制方法种类丰富,所以适应性比硬件要强。
Android系统的绘图原始框架如图1和图2描述。主要包括如下几个部分:
1)P0内核显示驱动。在linux内核中就是指framebuffer驱动。
2)P1应用程序图层合成服务SurfaceFlinger。这个服务是android的native 层服务,主要的功能就是接受来自客户端的图层修改指令,并且对当前系统中所有的应用程序图层进行合成,最终将合成的结果输送给linux显示驱动显示出来。
3)P2窗口显示控制Surface。可以通过该接口来控制一个图层窗口的属性(大小,位置等),该类负责桥接P3和P1。
4)P3窗口管理服务WindowManagerService(WMS)。该服务是android的核心服务之一,主要负责接受用户输入事件然后通知给相应的应用程序,同时也负责所有的应用程序窗口显示排序策略(Z order),应用程序窗口属性的(大小,位置等)的调整等。
5)P4视图树管理ViewRoot。P4的主要绘制流程请见图2。
一般来说一个应用程序是一群视图(View)的合成体,ViewRoot管理了这个应用的所有视图,每当有更新(大小发生变化,位置发生变化等),ViewRoot负责遍历该应用的所有视图,从而进行重新布局,重新绘制。
6)P5绘制操作接口Canvas。Canvas是Android为应用程序绘图抽象的一个接口,应用程序可以使用该接口进行各种绘图操作(画点,画线等)。
7)P6图形绘制库。图形绘制库是Canvas的后端实现。在android平台上分为skia和hwui,其中skia是纯粹用CPU操作的软件实现库,hwui是封装了openGL的硬件实现库,最终会使用硬件GPU资源。
当应用程序的初始化图形界面的时候,P4会根据当前应用程序是否含有硬件加速的标志位(由于该标志位在Android3.0之后才支持,所以使用android3.0之前的SDK编译的应用程序是不含有该标志位的)来决定使用的图形绘制库是软件还是硬件,一旦决定了以后,就立即申请相应的资源,后续不能更改。由此可见,一个应用程序在Android平台上显示方式,完全由该应用程序的版本决定,系统不能智能处理。
如上所述,为了有很好的兼容性,Android的显示系统中同时包含了硬件绘制和软件绘制,但是一个应用程序究竟是使用硬件绘制还是使用软件绘制是由应用程序在初始化的时候决定,之后不能更改,所以基于Android3.0之前SDK发布的应用程序由于没有加入使用硬件加速的标志位,导致在运行在支持硬件加速的平台上,不能享受硬件加速特性;基于Android3.0之后SDK发布的应用,也由于不能动态切换所以在一些硬件较差(主要是GPU)的平台上运行的效果不好,甚至出现不能运行的情况。
发明内容
本发明的目的是通过动态切换绘制方法的手段,修改Android的核心显示系统,让应用可以在运行的过程中根据平台的特性或者自身的需求实时的决定绘制方法使用软件还是硬件,减少应用程序对硬件的依赖,提高了其在不同平台下兼容性,同时也让那些基于Android3.0之前SDK发布的老版应用程序在硬件条件比较好的平台上顺畅的运行,提高了用户体验,另外平台可以根据平台的情况在动态的运行应用程序,节省了平台硬件资源。
本发明的具体技术方案如下:
一种Android 显示系统的软件绘制和硬件绘制动态切换方法,在现有Android的显示系统中,增加P31系统运行监控服务ROS(Runtime Oberserver Service)。该服务是本发明添加的系统监测服务,和P3一样也是运行的系统服务进程中,它的作用是监测和收集系统运行的状态(比如系统的内存使用情况,CPU资源占用情况,电池使用情况,平台温度等),然后根据这些状态来决定P4中使用的绘制方法;
增加P32应用程序绘制控制接口ADI(Application drawway interface)。该接口是本发明添加的供应用程序调用的接口,应用程序可以通过该接口强制设定自己绘制所使用的方式,并且通过该方式设定的优先级大于P31;
为了达到本发明的目的,本发明除了加了P31和P32 2个部分外,还修改了P4的绘制流程,具体描述如下:
1)P4在初始化的时候不去根据硬件加速标志位立即申请资源,而是保留该标志位,作为后续绘制方式选择的依据,该依据优先级最低。
2)P4在运行的时候接受P31的绘制方式的通知,并且对比该通知和当前采用的绘制方法是否一致,如果不一致,立即激活遍历线程,要求重绘。来自P31的绘制方式优先级居中,它会覆盖初始化时应用程序的硬件加速标志位。
3)P4在运行的时候接受P32的绘制方式的通知,并且对比该通知和当前采用的绘制方法是否一致,如果不一致,立即激活遍历线程,要求重绘。来自P32的绘制方式优先级最高,它会覆盖来自P31的绘制方式。
4)P4在进行绘制的时候,会判断当前的绘制方式和外界要求的绘制方式是否一致,如果不一致,会释放当前绘制方法所使用的资源,申请新的绘制方法资源,然后进行绘制动作。由于Android默认的流程是不支持这种资源的动态释放申请,所以这个地方同时也需要修改P2 Surface的接口,增加动态释放的接口disconnect(如图3所示)。另外在绘制过程中,如果使用硬件绘制的方式出现错误(可能是由于该应用调用的绘制方法硬件不支持,或者是由于运行的过程中出现内存不够等原因),也可以回退到软件的方式进行绘制。这样保证应用程序能够正常运行。
本发明的Android 显示系统的软件绘制和硬件绘制动态切换方法可以让一些老款的应用程序在众多的平台上运行的很流畅,用户体验性好;应用在绘制的过程中有很强的容错性,可以让配置较低的平台运行更多的应用程序。另外由于实时的根据系统平台的状态来决定使用软硬件绘制的方式,让平台可以花费最小的硬件资源代价获取最大的用户体验。这些都可在平板电脑产品上成功实施。
为了更好的理解本方法的改进,现在把应用程序分为OLD_APK(基于Android3.0之前SDK发布)和NEW_APK;把平台也分为GOOD_PLATFORM(硬件资源较好)和BAD_PLATFORM(硬件资源差),如下是对比情况表格:
附图说明
图1 Android原生整体绘制架构。
图2 视图树管理ViewRoot的原生绘制流程图。
图3 本发明的Android整体绘制架构。
图4 本发明的视图树管理ViewRoot的绘制流程图。
具体实施方式
下面结合附图3和图4进一步阐述本发明:
1、添加系统服务P31 ROS部分。该服务运行在系统服务进程中,它的作用是监测和收集系统运行的状态(比如系统的内存使用情况,CPU资源占用情况,电池使用情况,平台温度等),然后根据这些状态来决定P4中使用的绘制方法。由于该服务是运行在android的系统服务中的,所以在系统boot up的过程中就会启动,并且注册到Android的SystemServer中,其生命周期一直持续至平台关机。
2、添加应用程序接口P32 ADI。应用程序在运行的过程中可以随时调用该接口来设置绘制方式,P4会无条件的使用该方式进行绘制。
3、应用程序在初始化P4的时候,不去根据应用的硬件加速标志来一次性决定使用的绘制方式,而是保留该标志位,作为一个依据来决定后续绘制方式。
4、当应用程序接受外部事件发生视图更新或者是有来自P31和P32部分的通知,P4会立即启动绘制线程,进行重新绘制。在绘制的时候会首先判断是否有P32 要求的绘制方式事件,如果存在则使用该绘制方式,不存在则再去查看是否有P31要求的绘制方式事件,如果存在则使用该绘制方式,不存在则最后去查看初始化时保留的硬件加速标志位。通过上述方式决定好绘制方式后,当前的绘制方式和上次的绘制方式可能发生变化,如果不一致,P4会调用资源释放接口来释放上层绘制方式的资源,申请当前绘制方式所需要的资源。当一切准备就绪后,P4根据当前绘制的方式来选择使用P6中硬件绘制方式还是软件绘制方式。另外本发明还加入了硬件绘制的容错性处理,当硬件绘制失败后,分析失败原因,如果失败的原因是硬件不支持当前的绘制操作或者硬件内存不够等硬件原因,那么后续会强制使用软件的方式进行重新绘制。
以上是对本发明的实施例描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的,例如更改P31和P32的实现,以及更改在外部在加入新一种通知P4绘制方式的机制,调整接口,调用顺序,使用不同的编程语言(如 C、C++、Java 等)实现等。这些都在本发明的权利要求所限定的保护范围内。
Claims (5)
1.一种Android 显示系统的软件绘制和硬件绘制动态切换方法,在现有Android的显示系统中,增加P31系统运行监控服务ROS以监测和收集系统运行的状态,然后根据这些状态来决定视图树管理ViewRoot P4中使用的绘制方法;
增加P32应用程序绘制控制接口ADI,该应用程序通过该接口强制设定自己绘制所使用的方式,并且通过该方式设定的优先级大于P31;
对于P4视图树管理ViewRoot的绘制流程方法,步骤如下:
1)P4在初始化的时候不去根据硬件加速标志位立即申请资源,而是保留该标志位,作为后续绘制方式选择的依据,该依据优先级最低;
2)P4在运行的时候接收 P31的绘制方式的通知,并且对比该通知和当前采用的绘制方法是否一致,如果不一致,立即激活遍历线程,要求重绘;来自P31的绘制方式优先级居中,它会覆盖初始化时应用程序的硬件加速标志位;
3)P4在运行的时候接收 P32的绘制方式的通知,并且对比该通知和当前采用的绘制方法是否一致,如果不一致,立即激活遍历线程,要求重绘;来自P32的绘制方式优先级最高,它会覆盖来自P31的绘制方式;
4)P4在进行绘制的时候,会判断当前的绘制方式和外界要求的绘制方式是否一致,如果不一致,会释放当前绘制方法所使用的资源,申请新的绘制方法资源,然后进行绘制动作。
2.根据权利要求1所述的一种Android 显示系统的软件绘制和硬件绘制动态切换方法,其特征在于,所述系统运行的状态是系统的内存使用情况、CPU资源占用情况、电池使用情况或平台温度。
3.根据权利要求1所述的一种Android 显示系统的软件绘制和硬件绘制动态切换方法,其特征在于,在窗口显示控制的接口,增加动态释放的接口。
4. 根据权利要求1所述的一种Android 显示系统的软件绘制和硬件绘制动态切换方法,其特征在于,在绘制过程中,如果使用硬件绘制的方式出现错误可以回退到软件的方式进行绘制,确保应用程序能够正常运行。
5.根据权利要求4所述的一种Android 显示系统的软件绘制和硬件绘制动态切换方法,其特征在于,使用硬件绘制的方式出现错误是由于该应用调用的绘制方法硬件不支持,或者是由于运行的过程中出现内存不够的原因。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510146749.1A CN104731653B (zh) | 2015-03-31 | 2015-03-31 | 一种Android显示系统的软件绘制和硬件绘制动态切换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510146749.1A CN104731653B (zh) | 2015-03-31 | 2015-03-31 | 一种Android显示系统的软件绘制和硬件绘制动态切换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731653A CN104731653A (zh) | 2015-06-24 |
CN104731653B true CN104731653B (zh) | 2018-09-25 |
Family
ID=53455568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510146749.1A Active CN104731653B (zh) | 2015-03-31 | 2015-03-31 | 一种Android显示系统的软件绘制和硬件绘制动态切换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104731653B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106447595A (zh) * | 2016-09-23 | 2017-02-22 | 努比亚技术有限公司 | 一种分布式图像图形的渲染方法及终端 |
CN106600670A (zh) * | 2016-10-19 | 2017-04-26 | 上海斐讯数据通信技术有限公司 | 一种视图绘制中硬件加速控制方法及系统 |
CN106873984A (zh) * | 2017-01-13 | 2017-06-20 | 努比亚技术有限公司 | 一种自定义脚本绘制终端及方法 |
CN109725977B (zh) * | 2019-01-02 | 2022-06-28 | 京东方科技集团股份有限公司 | 一种基于Android系统的多应用显示方法及终端设备 |
CN110442389B (zh) * | 2019-08-07 | 2024-01-09 | 北京技德系统技术有限公司 | 一种多桌面环境共享使用gpu的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009526338A (ja) * | 2006-01-13 | 2009-07-16 | チョイス エンタープライジズ リミティド ライアビリティ カンパニー | コンピュータネットワークベースの3dレンダリングシステム |
CN101593357A (zh) * | 2008-05-28 | 2009-12-02 | 中国科学院自动化研究所 | 一种基于三维平面控件的交互式体切割方法 |
CN102004621A (zh) * | 2010-11-15 | 2011-04-06 | 华为技术有限公司 | 图形显示方法、装置和系统 |
CN103270492A (zh) * | 2010-12-15 | 2013-08-28 | 国际商业机器公司 | 用于网络使能应用的硬件加速图形 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005235172A (ja) * | 2004-01-20 | 2005-09-02 | Matsushita Electric Ind Co Ltd | 描画装置および描画方法 |
JP4095581B2 (ja) * | 2004-06-09 | 2008-06-04 | キヤノン株式会社 | 情報処理装置およびその制御方法 |
JP2006202211A (ja) * | 2005-01-24 | 2006-08-03 | Fujitsu Ltd | 画像描画装置および画像描画方法 |
JP5300346B2 (ja) * | 2008-06-30 | 2013-09-25 | キヤノン株式会社 | 画像形成装置及び画像形成方法 |
CN103198008A (zh) * | 2013-04-27 | 2013-07-10 | 清华大学 | 系统测试统计方法及装置 |
CN104331297A (zh) * | 2014-11-28 | 2015-02-04 | 广东威创视讯科技股份有限公司 | 一种渲染引擎的绘制方法及装置 |
-
2015
- 2015-03-31 CN CN201510146749.1A patent/CN104731653B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009526338A (ja) * | 2006-01-13 | 2009-07-16 | チョイス エンタープライジズ リミティド ライアビリティ カンパニー | コンピュータネットワークベースの3dレンダリングシステム |
CN101593357A (zh) * | 2008-05-28 | 2009-12-02 | 中国科学院自动化研究所 | 一种基于三维平面控件的交互式体切割方法 |
CN102004621A (zh) * | 2010-11-15 | 2011-04-06 | 华为技术有限公司 | 图形显示方法、装置和系统 |
CN103270492A (zh) * | 2010-12-15 | 2013-08-28 | 国际商业机器公司 | 用于网络使能应用的硬件加速图形 |
Also Published As
Publication number | Publication date |
---|---|
CN104731653A (zh) | 2015-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104731653B (zh) | 一种Android显示系统的软件绘制和硬件绘制动态切换方法 | |
US9146762B2 (en) | Specialized virtual machine to virtualize hardware resource for guest virtual machines | |
CN102402453B (zh) | 一种面向mips平台的系统虚拟机 | |
CN105183551A (zh) | 基于Linux容器技术的多Android系统之间切换方法 | |
CN107783821A (zh) | 车载一体虚拟化方法和装置 | |
US8930684B2 (en) | Adding a runtime service for firmware-based images for a device not known to an operating system | |
CA2300240A1 (en) | Transparent loading resources from read-only memory for an application program | |
EP2479666A2 (en) | Methods and systems to display platform graphics during operating system initialization | |
JPH07160608A (ja) | プログラム・アプリケーションを表示するためのシステムおよび方法 | |
CN113157362B (zh) | 一种应用于Linux上Android多窗口显示方法 | |
CN106648826A (zh) | 用于热迁移虚拟机的方法和装置 | |
CN107077375B (zh) | 用于多操作系统的显示方法、装置和电子设备 | |
CN102955704A (zh) | 软件执行方法及其电子装置 | |
CN108737131B (zh) | 网络设备虚拟化的实现方法和装置 | |
CN103677777A (zh) | 调用应用程序组件的方法及装置 | |
CN106339257B (zh) | 使客户机操作系统轻量化的方法及系统和虚拟化操作系统 | |
CN103064724A (zh) | 虚拟机构建方法及装置 | |
US20050138640A1 (en) | System and method for inducing asynchronous behavioral changes in a managed application process | |
KR100631755B1 (ko) | 자바 응용 프로그램의 룩을 실시간으로 전환하는 장치 및방법 | |
CN111209115A (zh) | 云桌面vGPU超分配方法 | |
CN109725977A (zh) | 一种基于Android系统的多应用显示方法及终端设备 | |
CN111258668A (zh) | 一种gpu虚拟桌面动态切换显示的方法及装置 | |
WO2004008312A1 (en) | Application modification system and method | |
US6637021B1 (en) | JavaBean activation framework-common desktop environment bridge | |
CN115639977A (zh) | 安卓图形合成方法与装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |