CN107040818A - 用于安卓电视的布局层级分析方法及系统 - Google Patents
用于安卓电视的布局层级分析方法及系统 Download PDFInfo
- Publication number
- CN107040818A CN107040818A CN201710209857.8A CN201710209857A CN107040818A CN 107040818 A CN107040818 A CN 107040818A CN 201710209857 A CN201710209857 A CN 201710209857A CN 107040818 A CN107040818 A CN 107040818A
- Authority
- CN
- China
- Prior art keywords
- xml
- data
- layout
- android
- hierarchy process
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8543—Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]
Abstract
本发明公开了一种用于安卓电视的布局层级分析方法及系统,涉及安卓电视应用领域,该方法包括以下步骤:启动应用程序后,安卓系统创建UI线程。构建用于布局层级分析的XML分析插件,XML分析插件进行初始化并创建子线程。XML分析插件在UI线程中植入层级分析切片代码。在子线程中解析XML布局层级,得到层级解析数据;对层级解析数据进行可视化处理,得到并呈现可视化数据。将可视化数据推送至UI线程或服务器。本发明中的用于安卓电视的布局层级分析方法,分析速度快、分析准确且能实现分析数据的输出。
Description
技术领域
本发明涉及安卓电视应用领域,具体涉及一种用于安卓电视的布局层级分析方法及系统。
背景技术
Android生态环境在评价一款应用的用户体验流畅度时,依据其绘制页面的帧率来作为评价指标,帧率越大,耗时越短,页面越流畅,一般帧率在60Hz以上,人的视觉感官不会感知出卡顿感。
Android应用在Canvas上绘制View是以类似图层的方式一层一层绘制的,因此所有布局在空间上呈梯形结构关系。一旦位于空间底层的布局进行重绘(invalidate)或重新布局其位置(requestLayout)都会间接导致父布局也进行重绘。通常情形下Android系统会依赖硬件加速性能针对复杂布局进行快速重绘,但在低配设备上硬件加速效率偏低,因此绘制布局的帧率会低于60Hz,卡顿感较为明显。
由于安卓电视以及安卓盒子的普及度低,造成其硬件更新换代严重滞后于安卓移动设备(手机、平板),因此靠提升硬件性能从而提高布局的绘制帧率显而不现实,只能针对安卓电视和安卓盒子的布局进行优化,尤其是在分析精简布局层级方面着手,进而提升布局的绘制帧率,减少页面卡顿现象。
当前Android平台针对应用程序的布局层级分析只能使用Hierarchy Viewer工具进行分析,该工具的优点是图形化界面显示布局层级关系,直观明了;但是其需要通过USB数据线或无线ADB连接设备,此外还存在分析速度缓慢、分析层级关系不准确以及分析数据无法输出等问题。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种分析速度快、分析准确且能将分析数据输出的用于安卓电视的布局层级分析方法。
为达到以上目的,本发明采取的技术方案是:
一种用于安卓电视的布局层级分析方法,该方法包括以下步骤:
启动应用程序后,安卓系统创建UI线程;
构建用于布局层级分析的XML分析插件,XML分析插件进行初始化并创建子线程;
XML分析插件在UI线程中植入层级分析切片代码;
在子线程中解析XML布局层级,得到层级解析数据;
对层级解析数据进行可视化处理,得到并呈现可视化数据;以及
将所述可视化数据推送至UI线程或服务器。
在上述技术方案的基础上,采用Java和Groovy语言并基于AOP编程方式来构建用于布局层级分析的XML分析插件。
在上述技术方案的基础上,XML分析插件在UI线程的onCreate阶段进行初始化并创建子线程。
在上述技术方案的基础上,XML分析插件在Activity和Fragment的setContentView阶段以及View和Adapter的inflate阶段植入层级分析切片代码。
在上述技术方案的基础上,在子线程中针对setContentView阶段采用DOM解析器解析XML布局层级,针对inflate阶段采用SAX解析器解析XML布局层级。
在上述技术方案的基础上,对层级解析数据进行可视化处理,得到并呈现可视化数据的步骤包括:
将层级解析数据逆向转换为XML数据流;
使用HTML格式化XML数据流;
使用XMLWriter将格式化后的数据转换为String类型字符串,得到可视化数据;
通过TextView或WebView呈现可视化数据。
在上述技术方案的基础上,使用Handler将可视化数据推送至UI线程。
在上述技术方案的基础上,通过网络请求框将可视化数据推送至服务器。
与此同时,本发明还提供一种分析速度快、分析准确且能将分析数据输出的用于安卓电视的布局层级分析的系统。
为达到以上目的,本发明采取的技术方案是:
一种实现上述用于安卓电视的布局层级分析方法的系统,包括:
XML分析插件,其用于创建子线程并在UI线程中植入层级分析切片代码;
解析模块,其用于在子线程中解析XML布局层级,得到层级解析数据;
可视化数据模块,其用于将层级解析数据进行可视化处理,得到并呈现可视化数据;以及
推送模块,其用于将可视化数据推送至UI线程或服务器。
在上述技术方案的基础上,所述XML分析插件为Gradle插件。
与现有技术相比,本发明的优点在于:
本发明的用于安卓电视的布局层级分析方法,基于AOP编程思想,并在应用程序Runtime阶段植入层级分析切片代码,可有效降低编译时的代码切入耗时。在setContentView和inflate布局之后进行XML布局解析能有效规避ViewStub带来的层级分析不准确性问题,而在子线程解析XML布局防止UI线程阻塞,提高分析速度。根据布局方式(setContentView、inflate)动态选择XML布局解析器,提高灵活性,便于插件后期的扩展,利用XMLWriter将格式化后的数据转换为String类型字符串,得到可视化数据,方便了可视化分析。此外还通过Handler进行子线与UI线程的数据交互,解决了分析数据输出的问题。
附图说明
图1为本发明实施例中用于安卓电视的布局层级分析方法的流程图;
图2为本发明实施例中用于安卓电视的布局层级分析的系统的结构框图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例提供一种用于安卓电视的布局层级分析方法,该方法包括以下步骤:
S1.启动应用程序后,安卓系统创建UI线程。
UI线程(User Interface Thread),也叫主线程(Main Thread),主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,应用程序和Android的UI组件(components from the Android UI toolkit)发生交互。
S2.构建用于布局层级分析的XML分析插件,XML分析插件进行初始化并创建子线程。
XML(Extensible Markup Language)可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。本实施例中的XML分析插件为Gradle插件,Gradle插件是采用Java和Groovy语言并基于AOP编程方式构建的。使用Groovy语言构建Gradle插件具有较少代码冗余以及与业务主逻辑解耦的优点,并符合现有Android应用组件化趋势。AOP(Aspect Oriented Programming)面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
此外,XML分析插件具体是在UI线程的onCreate阶段进行初始化并创建子线程。onCreate是Android中的一个消息响应函数,用来“表示一个窗口正在生成”。
S3.XML分析插件在UI线程中植入层级分析切片代码。
Gradle插件主要是通过注解方式植入层级分析切片代码,这样可最大限度降低对主业务代码的影响,达到解耦目的。此外,基于AOP编程思想,并在应用程序Runtime阶段植入层级分析切片代码,可有效降低编译时的代码切入耗时,其中Runtime指的是应用程序在运行(或者在被执行)的状态。
本实施例中,Gradle插件分别在Activity和Fragment的setContentView阶段以及View和Adapter的inflate阶段植入层级分析切片代码。一旦调用setContentView设置布局,层级分析切片代码会读取该函数下的布局ID,另外针对自定义View或ViewGroup以及适配器Adapter的植入入口选取主要是在LayoutInflater调用inflate函数填充布局之后执行。选在setContentView阶段以及inflate阶段之后执行主要是考虑到ViewStub等延迟布局控件对层级的影响。
S4.在子线程中解析XML布局层级,得到层级解析数据。
子线程(Sub-Thread),是指应用程序在运行阶段额外开辟的进行耗时操作的线程,与主线程处于平行关系。
XML布局层级解析是耗时操作需要开辟子线程进行操作,同时会根据是setContentView阶段还是inflate阶段选择不同的解析器。本实施例提供两种解析器,分别是SAX解析器、DOM解析器。
SAX(Simple API for XML),一个用于处理XML事件驱动的“推”模型,最大的优点是内存消耗小,因为整个文档无需一次加载到内存中,这使SAX解析器可以解析大于系统内存的文档。
DOM(Document Object Model),也叫文档对象模型,是W3C组织推荐的处理可扩展标志语言的标准编程接口,在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM。
SAX解析器会在XML文件开始顺序解析到文档结束处停止,setContentView会加载整个XML布局,但setContentView阶段中的XML节点加载时非顺序性的,因此SAX解析不适合该场景。Inflate加载XML的节点是从第一个节点开始,具有顺序性,SAX解析器会非常适合这种边加载边解析的顺序场景,同时SAX解析器速度快,内存占用低,非常适合安卓电视盒安卓盒子等小内存设备。
DOM解析器需要把整个XML文件加载解析,DOM解析可从任意节点开始,还可以修改XML文档节点。而inflate阶段会根据具体场景加载部分XML节点,inflate具有顺序性,但会越过部分节点,此时DOM解析器不适用于inflate阶段。
故本实施例在子线程中针对setContentView阶段采用DOM解析器解析XML布局层级,针对inflate阶段采用SAX解析器解析XML布局层级。
S5.对层级解析数据进行可视化处理,得到并呈现可视化数据。
可视化处理首先将层级解析数据逆向转换为XML数据流,然后使用HTML格式化XML数据流,再使用XMLWriter将格式化后的数据转换为String类型字符串,得到可视化数据,最后通过TextView或WebView呈现可视化数据。
采用XMLWriter将格式化后的数据转换为String类型字符串,方便可视化分析,同时也避免了需要像Hierarchy Viewer工具那样通过USB数据线或者无线ADB连接设备来实现可视化。此外,即使Hierarchy Viewer工具使用USB数据线或者无线ADB也是无法输出可视化数据的。
S6.将可视化数据推送至UI线程或服务器。
可视化数据推送至UI线程主要使用Handler进行子线与UI线程的数据交互,推送服务器需要依赖网络请求框架完成。
本发明实施例还提供一种实现上述用于安卓电视的布局层级分析方法的系统,包括XML分析插件、解析模块、可视化数据模块和推送模块。
其中,XML分析插件用于创建子线程并在UI线程中植入层级分析切片代码。解析模块用于在子线程中解析XML布局层级,得到层级解析数据。可视化数据模块用于将层级解析数据进行可视化处理,得到并呈现可视化数据。推送模块用于将可视化数据推送至UI线程或服务器。
综上所述,本实施例中基于AOP编程思想,并在应用程序Runtime阶段植入层级分析切片代码,可有效降低编译时的代码切入耗时。在setContentView和inflate布局之后进行XML布局解析能有效规避ViewStub带来的层级分析不准确性问题,而在子线程解析XML布局防止UI线程阻塞,提高分析速度。根据布局方式(setContentView、inflate)动态选择XML布局解析器,提高灵活性,便于插件后期的扩展,利用XMLWriter将格式化后的数据转换为String类型字符串,得到可视化数据,方便了可视化分析。此外还通过Handler进行子线与UI线程的数据交互,解决了分析数据输出的问题。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (10)
1.一种用于安卓电视的布局层级分析方法,其特征在于,该方法包括以下步骤:
启动应用程序后,安卓系统创建UI线程;
构建用于布局层级分析的XML分析插件,XML分析插件进行初始化并创建子线程;
XML分析插件在UI线程中植入层级分析切片代码;
在子线程中解析XML布局层级,得到层级解析数据;
对层级解析数据进行可视化处理,得到并呈现可视化数据;以及
将所述可视化数据推送至UI线程或服务器。
2.如权利要求1所述的用于安卓电视的布局层级分析方法,其特征在于:采用Java和Groovy语言并基于AOP编程方式来构建用于布局层级分析的XML分析插件。
3.如权利要求1所述的用于安卓电视的布局层级分析方法,其特征在于:XML分析插件在UI线程的onCreate阶段进行初始化并创建子线程。
4.如权利要求1所述的用于安卓电视的布局层级分析方法,其特征在于:XML分析插件在Activity和Fragment的setContentView阶段以及View和Adapter的inflate阶段植入层级分析切片代码。
5.如权利要求4所述的用于安卓电视的布局层级分析方法,其特征在于:在子线程中针对setContentView阶段采用DOM解析器解析XML布局层级,针对inflate阶段采用SAX解析器解析XML布局层级。
6.如权利要求1所述的用于安卓电视的布局层级分析方法,其特征在于,对层级解析数据进行可视化处理,得到并呈现可视化数据的步骤包括:
将层级解析数据逆向转换为XML数据流;
使用HTML格式化XML数据流;
使用XMLWriter将格式化后的数据转换为String类型字符串,得到可视化数据;
通过TextView或WebView呈现可视化数据。
7.如权利要求1所述的用于安卓电视的布局层级分析方法,其特征在于:使用Handler将可视化数据推送至UI线程。
8.如权利要求1所述的用于安卓电视的布局层级分析方法,其特征在于:通过网络请求框将可视化数据推送至服务器。
9.一种实现权利要求1所述的用于安卓电视的布局层级分析方法的系统,其特征在于,包括:
XML分析插件,其用于创建子线程并在UI线程中植入层级分析切片代码;
解析模块,其用于在子线程中解析XML布局层级,得到层级解析数据;
可视化数据模块,其用于将层级解析数据进行可视化处理,得到并呈现可视化数据;以及
推送模块,其用于将可视化数据推送至UI线程或服务器。
10.如权利要求9所述的系统,其特征在于:所述XML分析插件为Gradle插件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710209857.8A CN107040818B (zh) | 2017-03-31 | 2017-03-31 | 用于安卓电视的布局层级分析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710209857.8A CN107040818B (zh) | 2017-03-31 | 2017-03-31 | 用于安卓电视的布局层级分析方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107040818A true CN107040818A (zh) | 2017-08-11 |
CN107040818B CN107040818B (zh) | 2019-08-02 |
Family
ID=59534737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710209857.8A Active CN107040818B (zh) | 2017-03-31 | 2017-03-31 | 用于安卓电视的布局层级分析方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107040818B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109669752A (zh) * | 2018-12-19 | 2019-04-23 | 北京达佳互联信息技术有限公司 | 一种界面绘制方法、装置及移动终端 |
CN111176640A (zh) * | 2018-11-13 | 2020-05-19 | 武汉斗鱼网络科技有限公司 | Android工程中布局层级展现方法、存储介质、设备及系统 |
CN114385047A (zh) * | 2022-03-24 | 2022-04-22 | 北京麟卓信息科技有限公司 | Linux平台上基于Intent的安卓应用文件发送方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794050A (zh) * | 2014-01-21 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 应用程序的测试方法、装置及系统 |
US20160034441A1 (en) * | 2014-07-29 | 2016-02-04 | Board Of Regents, The University Of Texas System | Systems, apparatuses and methods for generating a user interface |
CN105718370A (zh) * | 2016-01-21 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种Android设备测试方法及测试装置 |
CN106354489A (zh) * | 2016-08-19 | 2017-01-25 | 成都卓影科技股份有限公司 | 一种epg引擎及页面解析方法 |
-
2017
- 2017-03-31 CN CN201710209857.8A patent/CN107040818B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794050A (zh) * | 2014-01-21 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 应用程序的测试方法、装置及系统 |
US20160034441A1 (en) * | 2014-07-29 | 2016-02-04 | Board Of Regents, The University Of Texas System | Systems, apparatuses and methods for generating a user interface |
CN105718370A (zh) * | 2016-01-21 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种Android设备测试方法及测试装置 |
CN106354489A (zh) * | 2016-08-19 | 2017-01-25 | 成都卓影科技股份有限公司 | 一种epg引擎及页面解析方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176640A (zh) * | 2018-11-13 | 2020-05-19 | 武汉斗鱼网络科技有限公司 | Android工程中布局层级展现方法、存储介质、设备及系统 |
CN111176640B (zh) * | 2018-11-13 | 2022-05-13 | 武汉斗鱼网络科技有限公司 | Android工程中布局层级展现方法、存储介质、设备及系统 |
CN109669752A (zh) * | 2018-12-19 | 2019-04-23 | 北京达佳互联信息技术有限公司 | 一种界面绘制方法、装置及移动终端 |
CN114385047A (zh) * | 2022-03-24 | 2022-04-22 | 北京麟卓信息科技有限公司 | Linux平台上基于Intent的安卓应用文件发送方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107040818B (zh) | 2019-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110764753B (zh) | 一种业务逻辑代码生成方法、装置、设备及存储介质 | |
CN110825362B (zh) | 低代码应用软件开发系统及方法 | |
CN107608889B (zh) | 一种测试脚本自动生成方法及系统 | |
CN105786526B (zh) | 一种基于Web的高效流程图绘制系统及方法 | |
EP3005301B1 (en) | Animation editing | |
CN109814866B (zh) | 页面应用转化为原生应用的处理方法和装置 | |
US7917860B2 (en) | Simple styling | |
US20110167332A1 (en) | System and Method for Generating Web Pages | |
US20030025732A1 (en) | Method and apparatus for providing customizable graphical user interface and screen layout | |
CN107239491A (zh) | 用于实现用户行为追踪的方法、设备、浏览器及电子设备 | |
CN104281447A (zh) | 一种报表快速生成及发布的系统及其方法 | |
CN106469140A (zh) | 一种报表生成系统及其方法 | |
CN107040818A (zh) | 用于安卓电视的布局层级分析方法及系统 | |
CN108170409B (zh) | Web前端控件的开发方法和系统 | |
CN110968944A (zh) | 在Web前端展示并操作CAD图纸的方法 | |
CN104798067A (zh) | Web服务器系统、辞典系统、辞典调用方法、画面控件显示方法以及演示应用生成方法 | |
CN109710250A (zh) | 一种用于构建用户界面的可视化引擎系统及方法 | |
CN104063231B (zh) | 一种基于hit‑tena的试验资源快速接入方法 | |
CN101876917A (zh) | 一种开发控件的方法及装置 | |
US20130191809A1 (en) | Graphical representation of an order of operations | |
US8762956B1 (en) | Generating a report document from code | |
US20100229083A1 (en) | Screen display program generating apparatus, screen display system, computer readable storage medium having stored therein a computer program causing a computer to function as the screen display program generating apparatus, and screen display program generating method | |
CN109740138A (zh) | 一种实现思维导图软件中图片文件可编辑的方法 | |
CN103488477B (zh) | Java接口的可视化编辑系统和可视化编辑方法 | |
CN108132779A (zh) | 一种基于arinc661的可视化df的设计验证方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |