一种WebView控件界面绘制的方法和装置的制造方法

文档序号:9865232阅读:339来源:国知局
一种WebView控件界面绘制的方法和装置的制造方法
【技术领域】
[0001]本发明属于信息技术领域,尤其涉及一种WebView控件界面绘制的方法和装置。
【背景技术】
[0002]随着HTML5标准及相关技术的发展,现代主流浏览器均支持HTML5视频播放。在安卓Android智能平台,chrome浏览器对HTML5视频的支持也做了较大优化。
[0003]在一些业务场景下,需要在Android应用主程序App的某一页面内调用HTML5视频播放功能。
[0004]目前Android提供的标准方法是在AndroidApp内嵌入WebView控件,通过该WebView控件加载和播放HTML5视频。这种方式有以下缺陷:第一、WebView控件不支持多进程,视频的渲染及合成显示都由Android应用主程序的UI主线程完成,UI主线程同时要处理用户事件并刷新基础UI界面,从而导致HTML5视频播放时,Android系统响应用户事件有可能出现反应迟钝,即通常所说的界面卡顿;第二、WebView工作在应用主程序的UI主线程,当WebView控件出现异常发生程序崩溃时,也会间接导致UI主线程异常,App主程序发生异常Force Close现象。

【发明内容】

[0005]本发明实施例提供了一种WebView控件界面绘制的方法和装置,旨在解决现有技术提供的WebView控件界面绘制的方法,界面会出现卡顿现象,App应用主程序也会发生异常现象的问题。
[0006]—方面,提供一种WebView控件界面绘制的方法,所述方法包括:
[0007]使WebView控件界面独立于应用主程序的宿主界面;
[0008]为WebView控件界面的绘制创建独立工作线程,所述独立工作线程独立于应用主程序的UI主线程;
[0009]在所述独立工作线程中完成WebView控件界面的绘制。
[0010]进一步地,所述使WebView控件界面独立于应用主程序的宿主界面包括:
[0011 ]将WebView控件界面的绘图层置于应用主程序的宿主界面的绘图层之下;
[0012]在应用主程序的宿主界面的绘图层上设置一块与WebView控件界面的绘图层大小相同的透明区域。
[0013]进一步地,所述为WebView控件界面的绘制创建独立工作线程包括:
[0014]在应用主程序的UI主线程中创建第一独立工作线程;
[0015]在应用主程序的UI主线程中创建第二独立工作线程;
[0016]在应用主程序的UI主线程中创建第三独立工作线程。
[0017]进一步地,所述在所述独立工作线程中完成WebView控件界面的绘制包括:
[0018]在第一独立工作线程中根据用户输入的网页生成渲染树;
[0019]在第二独立工作线程中生成合成树;
[0020]在第三独立工作线程中执行渲染和合成命令,并将合成结果输出到WebView控件的绘图层。
[0021]另一方面,提供一种WebView控件界面绘制的装置,所述装置包括:
[0022]界面独立模块,用于使WebView控件界面独立于应用主程序的宿主界面;
[0023]线程创建模块,用于为WebView控件界面的绘制创建独立工作线程,所述独立工作线程独立于应用主程序的UI主线程;
[0024]界面绘制模块,用于在所述独立工作线程中完成WebView控件界面的绘制。
[0025]进一步地,所述界面独立模块包括:
[0026]绘图层处理单元,用于将WebView控件界面的绘图层置于应用主程序的宿主界面的绘图层之下;
[0027]宿主界面处理单元,用于在应用主程序的宿主界面的绘图层上设置一块与WebVi ew控件界面的绘图层大小相同的透明区域。
[0028]进一步地,所述线程创建模块包括:
[0029]第一线程创建单元,用于在应用主程序的UI主线程中创建第一独立工作线程;
[0030]第二线程创建单元,用于在应用主程序的UI主线程中创建第二独立工作线程;
[0031]第三线程创建单元,用于在应用主程序的UI主线程中创建第三独立工作线程。
[0032]进一步地,所述界面绘制模块包括:
[0033]渲染树生成单元,用于在第一独立工作线程中根据用户输入的网页生成渲染树;
[0034]合成树生成单元,用于在第二独立工作线程中生成合成树;
[0035]结果输出单元,用于在第三独立工作线程中执行渲染和合成命令,并将合成结果输出到WebV i ew控件的绘图层。
[0036]在本发明实施例,使WebView控件界面独立于宿主界面后,为WebView控件界面的绘制创建独立于UI主线程的独立工作线程,通过独立于UI主线程的独立工作线程完成WebView控件界面的绘制,实现了将WebView控件界面的绘制置于独立工作线程进行,与应用主程序的UI主线程剥离,可以让HTML5视频播放任务工作在独立工作线程中,一方面可以提升HTML5视频在WebView控件中的显示效率,另一方面可以改善应用主程序的宿主界面嵌入WebView控件播放视频时的用户界面响应速度及提升主程序的健壮性。
【附图说明】
[0037]图1是本发明实施例一提供的WebView控件界面绘制的方法的实现流程图;
[0038]图2是本发明实施例一提供的WebView控件界面绘制的方法中,WebView控件界面独立于应用主程序的宿主界面的示意图;
[0039]图3是本发明实施例二提供的WebView控件界面绘制的装置的结构框图。
【具体实施方式】
[0040]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0041]在本发明实施例中,使WebView控件界面独立于应用主程序的宿主界面;为WebView控件界面的绘制创建独立工作线程,所述独立工作线程独立于应用主程序的UI主线程;在所述独立工作线程中完成WebView控件界面的绘制。
[0042]以下结合具体实施例对本发明的实现进行详细描述:
[0043]实施例一
[0044]图1示出了本发明实施例一提供的WebView控件界面绘制的方法的实现流程,详述如下:
[0045]在步骤SlOl中,使WebView控件界面独立于应用主程序的宿主界面。
[0046]在Android系统中,WebView控件与TextView、Button、ImageView等控件一样,它们都是将自己的UI绘制在应用主程序的宿主界面的绘图层上,这意味着它们的UI都是在应用主程序的UI主线程中进行绘制的。
[0047]当绘制一些复杂场景,例如游戏画面、Camera预览画面、视频播放,这些场景的UI相对复杂且要求进行高效的绘制,它们的UI放在应用主程序的UI主线程绘制就不是太合适,必须给这些要求复杂而高效的UI生成一个独立的绘图层以及使用一个独立的线程来绘制这些UI。
[0048]在Android系统中,Android App的界面是由SurfaceFlinger服务进行绘制,一般来说每一个界面在SurfaceFlinger服务中都对应一个绘图层Layer,用来描述绘图界面。WebView控件用于处理Web(HTML/CSS/JavaScript)相关内容,通常嵌入于应用主程序的宿主界面中。在现有架构下,WebView控件界面与应用主程序的宿主界面一起由应用主程序的UI主线程进行渲染绘制。
[0049]在本发明实施例中,在完成ViewRoot初始化、ViewGroup初始化以及应用主程序的宿主界面初始化的工作后,可以通过修改Android系统的SurfaceFlinger服务,将WebView控件界面的绘图层置于应用主程序的宿主界面的绘图层之下,使WebView控件界面独立于应用主程序的宿主界面,不再嵌入于应用主程序的宿主界面。通过修改SurfaceFlinger服务绘制的WebView控件界面对应的绘图层如图2所示,WebView控件界面对应的Layer独立于应用主程序的宿主界面对应的绘图层,WebVi ew控件界面对应的绘图层在绘图系统Z轴的位置低于应用主程序的宿主界面对应的绘图层。另外,通过SurfaceFlinger服务在应用主程序的宿主界面对应的绘图层上设置一块与WebView对应的绘图层大小相同的透明区域,这样WebView控件界面的显示和应用主程序的宿主界面的显示会独立开来。
[0050]在步骤S102中,为WebView控件界面的绘制创建独立工作线程,所述独立工作线程独立于应用主程序的UI主线程。
[0051 ]在本发明实施例中,在应用主程序的UI主线程中创建第一独立工作线程、第二独立工作线程和第三独立工作线程。这些独立工作线程,与应用主程序的
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1