CN111625238B - 一种显示窗口控制方法、装置、终端及存储介质 - Google Patents

一种显示窗口控制方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN111625238B
CN111625238B CN202010373112.7A CN202010373112A CN111625238B CN 111625238 B CN111625238 B CN 111625238B CN 202010373112 A CN202010373112 A CN 202010373112A CN 111625238 B CN111625238 B CN 111625238B
Authority
CN
China
Prior art keywords
layer
control
previous
new
window
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
Application number
CN202010373112.7A
Other languages
English (en)
Other versions
CN111625238A (zh
Inventor
朱铭锋
杨国富
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oppo Chongqing Intelligent Technology Co Ltd
Original Assignee
Oppo Chongqing Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Oppo Chongqing Intelligent Technology Co Ltd filed Critical Oppo Chongqing Intelligent Technology Co Ltd
Priority to CN202010373112.7A priority Critical patent/CN111625238B/zh
Publication of CN111625238A publication Critical patent/CN111625238A/zh
Application granted granted Critical
Publication of CN111625238B publication Critical patent/CN111625238B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本申请提供了一种显示窗口控制方法、装置、终端及存储介质;该方法包括:当通过窗口视图控件创建新图层时,获取新图层的上一个图层对应的图层标识;其中,图层标识是通过窗口视图控件创建上一个图层时所生成的;基于图层标识,对上一个图层的存在进行判断,得到判断结果;判断结果表征上一个图层是否存在;根据判断结果,通过窗口视图控件对上一个图层进行清除;当上一个图层清除失败,且新图层创建失败时,获取显示需求尺寸和待显示内容;显示尺寸需求表征待显示内容所要求的尺寸;通过窗口视图控件,依据显示尺寸需求对上一个图层的尺寸进行调整,得到调整后的上一个图层,并在调整后的上一个图层上,显示待显示内容,完成显示窗口控制。

Description

一种显示窗口控制方法、装置、终端及存储介质
技术领域
本申请涉及移动终端技术,尤其涉及一种显示窗口控制方法、装置、终端及存储介质。
背景技术
在移动终端中,应用程序的启动、登陆以及运行等过程中,都可能会涉及到显示窗口的控制,即图层的创建、调整以及清除销毁等过程。例如,某个游戏利用微信等社交软件的账号进行登录操作时,就会涉及到图层的清除;点击某个应用程序的扫一扫按钮进行扫一扫功能时,就会涉及到图层的创建等。
图层的创建、调整以及清除都是通过窗口视图控件实现的,即利用窗口视图控件来对图层进行管理,实现显示窗口控制。然而,利用窗口视图控件对图层进行管理时,可能会出现图层被过快清除,使得窗口中的页面内容正常显示的实现程度较低。在一些相关技术中,通过解除窗口视图控件与已创建好的图层的控制关系,来使得图层以正常速度被清除,在这时,窗口视图控件对失去了调整图层尺寸的能力,当由于某些原因使得旧图层没有清除掉,而新图层也没有创建成功时,就有可能会导致半屏黑屏问题,同时,窗口视图空间也会失去清除图层的能力,从而引发内存泄露的问题,进而使得窗口中的页面内容正常显示的实现程度较低。
发明内容
本申请实施例提供一种显示窗口控制方法、装置、终端及存储介质,能够使得窗口中的页面内容正常显示。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种显示窗口控制方法,包括:
当通过窗口视图控件创建新图层时,获取所述新图层的上一个图层对应的图层标识;其中,所述图层标识是通过所述窗口视图控件创建所述上一个图层时所生成的;
基于所述图层标识,对所述上一个图层的存在进行判断,得到判断结果;所述判断结果表征所述上一个图层是否存在;
根据所述判断结果,通过所述窗口视图控件对所述上一个图层进行清除;
当所述上一个图层清除失败,且所述新图层创建失败时,获取显示需求尺寸和待显示内容;所述显示尺寸需求表征所述待显示内容所要求的尺寸;
通过所述窗口视图控件,依据所述显示尺寸需求对所述上一个图层的尺寸进行调整,得到调整后的上一个图层,并在所述调整后的上一个图层上,显示所述待显示内容,完成显示窗口控制。
本申请实施例提供一种显示窗口控制装置,包括:
获取模块,用于当通过窗口视图控件创建新图层时,获取所述新图层的上一个图层对应的图层标识;其中,所述图层标识是通过所述窗口视图控件创建所述上一个图层时所生成的;
判断模块,用于基于所述图层标识,对所述上一个图层的存在进行判断,得到判断结果;所述判断结果表征所述上一个图层是否存在;
清除模块,用于根据所述判断结果,通过所述窗口视图控件对所述上一个图层进行清除;
控制模块,用于当所述上一个图层清除失败,且所述新图层创建失败时,获取显示需求尺寸和待显示内容;所述显示尺寸需求表征所述待显示内容所要求的尺寸;通过所述窗口视图控件,依据所述显示尺寸需求对所述上一个图层的尺寸进行调整,得到调整后的上一个图层,并在所述调整后的上一个图层上,显示所述待显示内容,完成显示窗口控制。
本申请实施例提供一种终端,包括:
存储器,用于存储可执行显示窗口控制指令;
处理器,用于执行所述存储器中存储的可执行显示窗口控制指令时,实现本申请实施例提供的显示窗口控制方法。
本申请实施例提供一种存储介质,存储有可执行显示窗口控制指令,用于引起处理器执行时,实现本申请实施例提供的显示窗口控制方法。
本申请实施例具有以下有益效果:
本申请实施例中,当终端通过窗口视图控件创建新图层时,获取新图层的上一个图层对应的图层标识,基于图层标识,对上一个图层的存在进行判断,得到判断结果,根据判断结果,通过窗口视图控件对上一个图层进行清除,当上一个图层清除失败,且新图层创建失败时,获取显示需求尺寸和待显示内容,通过窗口视图控件,依据显示尺寸需求对上一个图层的尺寸进行调整,得到调整后的上一个图层,并在调整后的上一个图层上,显示待显示内容,完成显示窗口控制。如此,终端能够在通过窗口视图控件创建新图层时,判断新图层的上一个图层是否存在,从而在上一个图层存在时,对上一个图层进行清除,以解决内存泄露与图层被过快销毁的问题,以使得页面内容能够正常显示;而当上一个图层清除失败,且新图层创建失败时,能够继续对上一个图层进行尺寸调整,从而显示待显示内容,解决了半屏黑屏的问题,以使得页面内容能够正常显示。
附图说明
图1是示出的产生半屏黑屏的原因的示意图;
图2是示出的正常情况下页面切换的代码调试示意图一;
图3是示出的正常情况下页面切换的代码调试示意图二;
图4是示出的正常情况下页面切换在操作系统的代码调试示意图;
图5是示出的正常情况下的页面切换的流程示意图;
图6是示出的异常情况下页面切换的代码调试示意图;
图7是示出的异常情况下页面切换在操作系统的代码调试示意图;
图8是示出的异常情况下的页面切换的流程示意图;
图9是示出的内存泄漏的示意图;
图10是本申请实施例提供的显示窗口控制方法的一个可选的流程示意图一;
图11是本申请实施例提供的显示窗口控制方法的一个可选的流程示意图二;
图12是本申请实施例提供的对新图层的显示尺寸进行控制的示意图;
图13是本申请实施例提供的清除上一个图层的过程示意图;
图14是本申请实施例提供的创建新图层的过程示意图;
图15是本申请实施例提供的窗口显示控制装置100的结构示意图;
图16为本申请实施例提供的终端200的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)显示窗口控制,是指对显示窗口中的各个图层进行控制,例如,对显示窗口中的图层进行创建、尺寸调整以及销毁等过程。显示窗口控制是各个应用程序的页面内容正常显示的基础,例如,从游戏类应用程序的页面跳转到社交类应用程序的页面时,就伴随着对显示有游戏类应用程序的页面的图层进行销毁,对显示有社交类应用程序页面的图层进行创建,以使得这两个应用程序的页面内容都能够正常显示出来。
2)窗口视图控件,是用来对显示窗口进行控制的工具。窗口视图控件集成有用于创建图层、控制图层尺寸以及销毁图层的方法,在实际使用中,每个方法都可以看作是一个子控件。例如,在安卓系统中,表层视图(SurfaceView)就是窗口视图控件,其中的destroy方法,就可以看作是用于销毁图层的子控件。
3)图层,是显示应用程序的具体页面内容的地方。通常情况下,应用程序需要显示的页面内容中的各个元素,都是单独存储的,在需要显示页面内容时,例如动画效果,终端的操作系统会将这些元素绘制在图层上,并通过按照顺序快速显示完成元素绘制的图层,达到显示动画效果的目的。
4)图层标识,是指每个图层所拥有的身份信息。为了达到对各个图层有序呈现的目的,需要用图层标识来区分不同的图层,因此,在创建图层时,还会相应的生成图层标识。
5)图层创建需求信息,是用来指示是否要开始创建图层,以显示页面内容的信息。当用户在智能终端上触发点击事件,以进行动画效果,或者是页面跳转等需要创建图层才能完成的功能时,终端就会生成图层创建需求信息,以使得操作系统能够按照需求创建图层。
在移动终端中,应用程序的启动、登陆以及运行等过程中,都有可能会涉及到显示窗口的控制,即涉及到图层的创建、调整以及清除销毁等过程。例如,某个游戏利用微信等社交软件账号进行登陆操作时,就会进行页面跳转,此时,会涉及到图层的清除;或者是点击某个应用程序的扫一扫功能,就会涉及到图层的创建等。
相关技术中,图层的创建、调整以及清除都是通过窗口视图控件实现的,即利用窗口视图控件来对图层进行管理,实现显示窗口控制。然而,利用窗口视图控件对图层进行管理时,可能会出现图层被过快清除,使得窗口中的页面内容正常显示的实现程度较低。
虽然,在一些技术中,存在通过剥离窗口视图控件对图层之间的控制,来使得图层不被过快清除掉,例如,在安卓系统中,利用剥离父子关系(detachChildren)机制,剥离SurfaceView对已经创建好的图层的控制权,使得SurfaceView无法再控制用于接收并合成图形显示数据的子控件端(SurfaceFliger)所对应的图层的尺寸调整和清除。这时,可能存在SurfaceView不断创建图层,但是却无法清除销毁图层,导致内存泄露问题,以及SurfaceView无法改变图层的尺寸大小,导致半屏黑屏问题,从而依旧使得窗口中的页面内容正常显示的实现程度较低。由此可见,虽然业界提出了一些方法来试图解决图层被过快清除的问题,但是这些方法也有可能导致新的问题,影响窗口中页面内容的正常播放。
下面,以安卓系统为例,来对剥离窗口视图控件对图层的控制,导致出现半屏黑屏和内存泄露的问题进行说明。
在安卓系统中,窗口视图控件为SurfaceView,终端利用detachChildren机制剥离了SurfaceView对在SurfaceFlinger端的图层的大小、位置和清除。当用户通过终端运行某射击类游戏,并在利用社交软件账号登陆该游戏之后,返回到该游戏的游戏界面时,终端只有一半显示屏幕显示了游戏界面,另一半显示屏幕为黑屏。究其原因,是终端利用detachChildren机制剥离了SurfaceView了对显示游戏画面内容的图层的控制权,使得该图层的尺寸在页面跳转时无法进行适应性的改变,从而产生半屏黑屏。示例性的,图1是示出的产生半屏黑屏的原因的示意图。参见图1,在正常情况1-1下,SurfaceView所创建的显示页面a的图层,在图层参数1-11中,坐标起点1-12=(0,0),尺寸1-13=(2400,1080),表明正常情况下,页面a的内容应当按照2400*1080的分辨率显示,即按照终端的横屏模式显示;而在异常情况1-2下,同样是SurfaceView所创建的显示页面a的图层,但是在具体的图层参数1-21中,坐标起点1-22=(0,0),尺寸1-23=(1080,2400),SurfaceView失去了对图层的控制权,当由于某些原因使得图层的分辨率变为1080*2400时,SurfaceView却无法调整图层的大小使得图层与页面a相适配,从而页面a按照终端的竖屏模式进行显示,从而导致有终端的显示屏幕的一半没有显示页面内容,出现半屏黑屏现象。
具体的,图2示出了正常情况下页面切换的代码调试示意图一,参见图2,在安卓系统中,当终端需要从游戏登陆界面跳转至社交软件登陆界面时,对应的代码调试片段为AcitivityManager:resumeTopActivityLocked:next{WXEnrtyActivity}2-1,其中,WXEntryAcitivity是社交软件登陆界面。同时,终端还对游戏登陆界面进行了detachChildren机制,其代码调试片段为SurfaceControl:detachChildrenthis=Surface(name=AFMainAcitivity)2-2,其中,AFMainAcitivity为游戏登陆界面。
无论是在正常情况下还是异常情况下,当通过社交软件账号登陆射击类游戏时,需要先切出游戏登陆界面,再切回游戏登陆界面,这时,是先将绘制有游戏登陆界面的图层隐藏,即将其设置为不可见,然后将绘制有游戏登陆界面的图层显示,即将其设置为可见。
示例性的,图3示出了正常情况下页面切换的代码调试示意图二。如图3所示,在切出游戏登陆界面3-1时,会针对游戏登陆界面,即AFMainAcitivity3-A,调用handleAppVisibility3-11,然后将AFMainAcitivity3-A设置为不可见,即将AFMainAcitivity3-A的visible3-12设置为false,mAppVisible3-13设置为false。接着,当终端需要从社交软件登录界面跳转至游戏登录界面3-2时,其对应的代码调试片段为AcitivityManager:resumeTopActivityLocked,prev:{WXEnrtyActivity}3-21,AcitivityManager:resumeTopActivityLocked,next:{AFMainActivity}3-22。此时,会针对AFMainAcitivity3-A,进行区域3-3中的代码,即调用handleAppVisibility3-31,并将AFMainAcitivity3-A的visible3-32设置为true,将mAppVisible3-33设置为true。这样,就能够实现正常情况下的页面切换。
进一步的,图4示出了正常情况下页面切换在操作系统的代码调试示意图。参见图4,在区域4-1中,是要利用detachChildren解除SurfaceFlinger端的图层的控制权,在解除控制关系的代码SurfaceControl:detachChildrenthis=Surface(name=AFMainAcitivity)4-11下,执行的SurfaceFlinger:Client::detachLayer thislayersequence243Background for SurfaceView-XXXX4-12,与SurfaceFlinger:Client::detachLayer this layer sequence242SurfaceView-AFMainActivity4-13,即在SurfaceFlinger端解除SurfaceView的背景图层XXXX与SurfaceView的图层AFMainActivity的关系。接着,在终端从游戏登陆界面跳转至社交软件登陆界面时,即针对AFMainActivity第一次调用handleAppVisible时4-2,执行[AFMainAcitivity]:handleAppVisible:visible=false,mAppVisible=false,xxxxx4-21时,终端的操作系统先要执行updateRequestedVisibility4-22,然后给变化量changes4-23中的各个参数确定出参数值,即使得creating4-24=false,format4-25=false,size4-26=false,visible4-27=true此时,图层的布局Layout4-28为x=0,y=0,w=1080,h=2400,frame=(0,0-1080,2400),即图层从坐标点(0,0)开始,至坐标(1080,2400)结束,按照竖屏进行显示。然后,在终端从社交软件登录界面跳转至游戏登陆界面时,即针对AFMainActivity第二次调用handleAppVisible时4-3时,执行[AFMainAcitivity]:handleAppVisible:visible=true,mAppVisible=true,xxxxx4-31时,也是先执行updateRequestedVisibility4-32,然后使得changes4-33中的参数creating4-34=true,format4-35=false,size4-36=true,visible4-37=true,同时,还利用surfaceChanged4-38确定参数w=2400,h=1080,以使得将图层大小改变为2400*1080,以满足横屏显示。
由图2、图3和图4可知,终端会两次调用handleAppVisibility,分别设置mAppVisible为false和true,两次调用存在时间差,终端在底层的操作系统会执行两次updateRequestedVisibility,在第一次伴随着SurfaceView的destroy,在第二次伴随着SurfaceView的creating。即使在此页面切换的过程中执行了detachChildren操作,导致SurfaceView失去对旧图层的控制,但是在SurfaceView对于新创建的图层大小,依旧可以控制新创建的图层的大小。
示例性的,图5示出了正常情况下的页面切换的流程示意图。参见图5,从游戏登录界面切换到社交软件登录界面的流程如流程5-1所示,从社交软件登录界面切换至游戏登录界面的流程如流程5-2所示。在流程5-1中,终端通过窗口管理服务(Window ManagerService,WMS)先接收用户触发的事件5-11,对用户触发的事件进行解析,发现需要从游戏登录界面跳转至设计软件登录界面时,向终端操作系统发送图层是否可视的信息5-12,并确定出是否要新增图层5-13,同时,终端会对窗口视图控件剥离控制权5-A。当终端的操作系统接收到图层不可视的信息时,会调用图层视图控制子控件5-14,接着调用遍历绘制树方法5-15,然后调用遍历处理方法5-16,最后将调用清除方法5-17,即destroy将图层清除。在流程5-2中,也是终端先通过WMS接收用户触发的事件5-21并翻译,得知需要从社交软件登录界面跳转至游戏登录界面时,发送图层是否可视的信息5-22,并确定出是否要新增图层5-23,同时对窗口视图控件剥离控制权5-A,当要新增图层时,调用图层视图控制子控件5-24,接着调用遍历绘制树方法5-25,调用遍历处理方法5-26,最后调用创建方法5-27,即creating创建新图层。
图6示出了异常情况下页面切换的代码调试示意图。参见图6,在异常情况下,当终端需要从游戏登陆界面跳转至社交软件登陆界面时6-1,对应的代码调试片段与图2类似,为AcitivityManager:resumeTopActivityLocked,next:{WXEnrtyActivity}6-11,并且,还执行了SurfaceControl:detachChildren this=Surface(name=AFMainAcitivity)6-12,以剥离SurfaceView对AFMainAcitivity的控制。接着,在页面跳转的图层可视性设置过程中6-2,执行WindowManager:setAppVisible({AFMainAcitivity},visible=false)6-21,和WindowManager:setAppVisible({WXEntryAcitivity},visible=true)6-22来使得从游戏登录界面跳转至社交软件登录界面。在异常发生点6-3,会针对AFMainAcitivity第一次调用handleAppVisibility,即执行[AFMainAcitivity]:handleAppVisible:visible=false,mAppVisible=false,xxxxx6-31,然而,由于某些原因,使得第二次调用handleAppVisibility在第一次调用过之后很短时间内就开始了,即在很短的时间内又执行了[AFMainAcitivity]:handleAppVisible:visible=true,mAppVisible=true,xxxxx6-32,从而发生异常状况。
进一步的,图7示出了异常情况下页面切换在操作系统的代码调试示意图。从图7可以看出,区域7-1是解除控制关系的代码在SurfaceControl:detachChildrenthis=Surface(name=AFMainAcitivity)7-11下,具体所执行的过程是SurfaceFlinger:Client::detachLayerthislayersequence797Background for SurfaceView-XXXX7-12,与SurfaceFlinger:Client::detachLayer this layer sequence796SurfaceView-AFMainActivity7-13。具体的,在此过程中,两次调用handleAPPVisibility的时间较近,只执行了一次updateRequestedVisibility7-21,此时,changes7-22中的参数为creating7-23=false,fromat7-24=false,size7-25=true,而visible7-26=false,且Layout7-27为x=0,y=0,w=2400,h=1080。这样,当visible7-26为false时,不会触发destroy和creating操作,并且由于执行了detachChildren操作,使得surfaceView无法改变旧图层大小,从而出现半屏黑屏的情况。
示例性的,图8示出了异常情况下的页面切换的流程示意图。参见图8,从游戏登录界面切换到社交软件登录界面的流程如流程8-1所示,从社交软件登录界面切换至游戏登录界面的流程如流程8-2所示。在流程8-1中,终端通过窗口管理服务(Window ManagerService,WMS)先接收用户触发的事件8-11,对用户触发的事件进行翻译分析,发现需要从游戏登录界面跳转至设计软件登录界面时,向终端操作系统发送图层是否可视的信息8-12,并确定出是否要新增图层8-13,同时,终端会对窗口视图控件剥离控制权8-A。当终端的操作系统接收到图层不可视的信息时,会调用图层视图控制子控件8-14,接着调用遍历绘制树方法8-15。与此同时,在流程8-2中,也是终端先通过WMS接收用户触发的事件8-21并翻译,得知需要从社交软件登录界面跳转至游戏登录界面时,发送图层是否可视的信息8-22,并确定出是否要新增图层8-23,同时对窗口视图控件剥离控制权8-A,当要新增图层时,调用图层视图控制子控件8-24,接着调用遍历绘制树方法8-25,调用遍历处理方法8-26。然而,由于在第二次调用图层视图控制子控件,例如handleAppVisibility,并设置完mAppVisible调用之后,调用遍历绘制树方法8-25需要向监听线程,例如Choreographer发送callback信号。但是,该callback信号不会被立即执行,而是等待SF进程产生VSYNC信号后才被执行。这可能会导致在第一次调用图层视图控制子控件将mAppVisible由true变成false之后,调用遍历绘制树方法8-25,等待VSYNC信号时已经在第二次调用图层视图控制子控件,使得mAppVisible由false变成ture,这时,就会使得图7中的visblechange为false,无法触发destroy,creating操作,并且由于剥离了SurfaceView对图层的控制权,图层的大小也无法再改变了,这时,就会出现半屏黑屏现象。
内存泄漏是由于无法触发图层的销毁过程而导致的。参见图9,图9示出了内存泄漏的示意图。当用户多次快读点击扫一扫页面时,有可能会出现两次调用图层视图控制子控件的时间较短,从而引起无法触发图层的销毁过程,例如,当用户第一次打开扫一扫时,创建图层9-1,这时起始内存地址为0x7e39a71460,需要的内存大小为9639.00KiB;当用户第二次打开扫一扫时,会创建图层9-2,起始内存地址为0x7e39a72420,所需的内存大小为9639.00KiB;当用户第三次打开扫一扫时,会创建图层9-3,起始内存地址为0x7e39a72490……若是用户一直打开扫一扫,终端还会一直创建图层,直至内存被完全消耗。
本申请实施例提供一种显示窗口控制方法、装置、终端和存储介质,能够使得窗口中的页面内容正常显示。下面说明本申请实施例提供的显示窗口控制设备的示例性应用,本申请实施例提供的显示窗口控制设备可以实施为智能手机、平板电脑、笔记本电脑等各种类型的用户终端,也可以实施为服务器。下面,将说明显示窗口控制设备实施为终端时示例性应用。
参见图10,图10是本申请实施例提供的显示窗口控制方法的一个可选的流程示意图一,将结合图10示出的步骤进行说明。
S101、当通过窗口视图控件创建新图层时,获取新图层的上一个图层对应的图层标识;其中,图层标识是通过窗口视图控件创建上一个图层时生成的。
本申请实施例是在通过窗口显示控件对图层进行创建、清除以及大小调整的基础上实现的,这样可以使得窗口显示控件不失去对图层的控制权,从而避免半屏黑屏、内存泄漏的问题,同时可以避免图层被过快销毁清除,也就是说,通过本申请实施例,终端能够对窗口中的页面内容正常显示。终端可以根据用户所触发的事件来决定是调整图层、清除图层还是创建图层,为了使图层不被过快的销毁,在本申请实施例中,当终端对用户所触发的事件,例如点击显示屏幕上的某个按钮进行解析,发现需要通过创建图层和销毁图层进行页面跳转时,终端可以先创建新图层,然后在创建新图层的同时,清除在新图层之前的图层,从而使得图层不被销毁过快,这时,当终端通过窗口视图控件开始创建新图层时,会同时获取所要创建的新图层的上一个图层对应的图层标识,以便于后续根据图层标识来判断是否新图层的上一个图层是否被销毁了。
需要说明的是,在每个图层的创建过程中,终端都会通过窗口视图控件来为所创建的每个图层,生成对应的身份信息,以使得终端可以根据这些图层身份标识来分辨不同的图层。上一个图层也不例外,终端在创建新图层的上一个图层时,会通过窗口视图控件来为其生成能够表示其唯一性的身份信息。当终端获取到上一个图层的身份信息时,可以将这个身份信息记为图层标识。
可以理解的是,在本申请的一些实施例中,图层标识可以是数字形式的,即终端通过窗口视图控件,按照创建次序来为各个图层进行编号,该编号就是身份信息。在本申请的另一些实施例中,图层标识还可以是字符串形式的,即终端还可以通过窗口视图控件,用每个图层的功能来为每个图层进行命名,例如,该图层所要呈现的是哪个应用的页面内容等,从而得到每个图层的身份信息。
示例性的,在本申请的一些实施例中,当终端通过窗口视图控件正在创建的新图层的次序为5时,上一个图层的图层标识就是4;当终端需要从游戏登陆界面AFMainActivity跳转至社交软件登陆界面WXEntryActivity时,且正在创建的新图层为WXEntryActivity时,上一个图层的图层标识即为AFMainActivity。
需要说明的是,新图层是用于呈现终端上的应用程序待显示的页面内容的,这里的应用程序,指的是一个或者是多个安装在终端上的应用软件。在一些情况下,终端只需要通过窗口视图控件,对一个应用软件的页面内容进行显示,例如,在用户启动射击类游戏时,终端只需要通过窗口视图控件来对该游戏的启动动画进行显示,此时,新图层是呈现该游戏的页面内容的;在另一些情况下,终端需要通过窗口视图控件对多个应用软件到页面内容进行显示,例如,用户利用社交软件账号登陆射击类游戏时,涉及到了从射击类游戏的登陆界面跳转到社交软件的登陆界面,这时,新图层的具体用途需要根据用户所触发的事件来进行分析,当用户是在射击类游戏界面点击了登陆按钮时,新图层则是要用于显示社交软件登陆界面,当用户在社交软件登陆界面点击了登陆按钮时,新图层则是用于显示射击类游戏在登陆之后的游戏界面。
可以理解的是,窗口视图控件是指对窗口中的图层进行控制的控件、组件或是方法的泛称,例如,当终端是安卓操作系统时,窗口视图控件就是的是SurfaceView控件,当终端是iOS时,窗口视图控件指的就是iOS系统中实现对窗口中的图层进行控件的组件。
S102、基于图层标识,对上一个图层的存在进行判断,得到判断结果;判断结果表征上一个图层是否存在。
终端为了能够完成对新图层之前的图层的清除操作,需要先判断新图层的上一个图层是否存在。由于终端在创建每个图层时,都会为其生成身份信息,而图层标识就是上一个图层的身份信息,因此,只要终端获取到了图层标识,就表明上一个图层已经被创建了,上一个图层是存在的,当终端获取不到图层标识时,表明上一个图层并没有被创建,上一个图层是不存在的。这样,终端就可以判断出上一个图层是否存在,从而得到判断结果。
进一步的,在本申请的另一些实施例中,图层标识也是可以被清空的,例如,当上一个图层被清除时,同时清空图层标识,这时,终端也是获取不到图层标识的,也会得出上一个图层不存在的判断结果。换句话说,当终端发现图层标识为空时,就表明上一个图层不存在。因此,终端基于图层标识,对上一个图层的存在进行判断,可以通过判断图层标识是否为空来实现。
S103、根据判断结果,通过窗口视图控件对上一个图层进行清除。
当终端得到判断结果时,会对判断结果进行解析,从而得知上一个图层是否存在。当上一个图层是存在的时,终端会通过窗口视图控件,来调用图层销毁方法,来对上一个图层进行销毁,并将上一个图层所占用的内存空间进行释放,从而完成对上一个图层的清除过程。这样,每个图层都是在创建其下一个图层时被清除,使得每个图层都能够被销毁,且每个图层都不会被过快销毁,因此,可以避免由于图层一直被创建而不被销毁所出现的内存泄露问题,还可以避免图层被过快销毁而出现页面内容无法正常显示的问题。
进一步的,在本申请的一些实施例中,终端也可能得到表征上一个图层不存在的判断结果,这时,终端没有可以清除的目标,也就不会通过窗口视图空间对上一个图层进行清除。换句话说,当终端得到表征上一个图层不存在的判断结果时,终端就不会再开始图层清除流程。
需要说明的是,在本申请的一些实施例中,为了使得上一个图层被清除之后,终端在后续不会再次启动针对上一个进行清除操作,从而避免出现由于需要清除的对象不存在错误,终端会在上一个图层被清除之后,将上一个图层的图层标识也进行清空。
可以理解的是,在本发明实施例中,通过窗口视图控件对上一个图层进行清除时,是先调用图层视图控制子控件,修改上一个图层的可视性,然后当上一个图层的可视性表明上一个图层隐藏时,调用遍历处理控件,即调用遍历绘制树方法和遍历处理方法,来将上一个图层隐藏,对着调用销毁方法将隐藏的上一个图层清除。
S104、当上一个图层清除失败,且新图层创建失败时,获取显示需求尺寸和待显示内容;显示尺寸需求表征待显示内容所要求的尺寸。
在实际应用中,由于某些原因,存在上一个页面没有被清除,且新图层也没有创建成功的情况,例如在调用遍历绘制树时,在等待刷新指令,即VSYNC时,就已经进行第二次调用图层视图控制子控件,从而导致上一个图层清除失败,新图层创建也失败的现象。由于上一个图层是没有被清除掉,为了避免出现半屏黑屏问题,终端会先利用上一个图层完成显示,然后在接下来的处理过程中,按照需求继续创建新图层。此时,终端会获取显示需求尺寸和待显示内容,其中,显示需求尺寸是待显示内容所要求的尺寸。
可以理解的是,待显示内容通常是按照一定的页面大小规划、设计好的,因此,为了将待显示内容完整、清楚的显示在显示界面上,就需要按照待显示内容的尺寸,即分辨率进行显示,这时,终端就需要获取新图层的显示尺寸需求。进一步的,显示尺寸需求可以是从待显示内容中获取到的,例如,待显示内容在设计时,将其所需要的尺寸存储在了待显示内容的第一个字节等,当然,显示尺寸需求还可以是单独存储的,本申请实施例在此不作限定。
S105、通过窗口视图控件,依据显示尺寸需求对上一个图层的尺寸进行调整,得到调整后的上一个图层,并在调整后的上一个图层上,显示待显示内容,完成显示窗口控制。
终端调用窗口视图控件,按照显示尺寸需求来对上一个图层的尺寸进行调整,从而得到符合显示尺寸需求的调整后的上一个图层。接着,终端再将待显示内容显示在已经进过尺寸调整的上一个图层上,以使得待显示内容能够被正常显示,从而完成显示窗口控制。这样,即使终端在清除上一个图层,和创建新图层时出现问题,也可以将待显示内容正常显示出来,解决了半屏黑屏的问题。
可以理解的是,在本申请实施例中,对上一个图层的尺寸进行调整,即是对上一个图层的宽度和高度进行调整,即对上一个图层在宽度和高度上进行拉长或者是缩短。例如,若上一个图层的显示尺寸为1080*2400,当待显示内容所要求的显示尺寸为2400*1080时,终端就需要对窗口视图控件,来对上一个图层的显示尺寸进行调整,即将上一个图层的显示尺寸调整为2400*1080,以使的待显示内容能够完成地显示在调整后的上一个图层上。
可以理解的是,将待显示内容显示在调整后的上一个图层上,指的是将待显示内容绘制在调整后的上一个图层上并渲染,使得待显示内容能够呈现出来。
当然,在本发明的另一些实施例中,通过窗口视图控件对上一个图层清除成功,并且新图层也创建成功时,终端就可以调用窗口视图控件,对新图层进行尺寸调整,以将待显示内容呈现在新图层上。
本申请实施例中,终端能够在通过窗口视图控件创建新图层时,判断新图层的上一个图层是否存在,从而在上一个图层存在时,对上一个图层进行清除,以解决内存泄露与图层被过快销毁的问题,以使得页面内容能够正常显示;而当上一个图层清除失败,且新图层创建失败时,能够继续对上一个图层进行尺寸调整,从而显示待显示内容,解决了半屏黑屏的问题,以使得页面内容能够正常显示。
在本申请的一些实施例中,根据判断结果,对上一个图层进行清除,即S103的具体实现过程,可以包括:S1031-S1032,如下:
S1031、当判断结果表征上一个图层存在时,通过窗口视图控件对上一个图层进行清除。
当终端对判断结果进行解析,发现判断结果表征上一个图层存在时,终端会通过窗口视图控件调用图层销毁方法,来对上一个图层进行清除。由于每个图层在创建时,终端都会为其分配内存空间,因而,在对上一个图层进行清除时,还需要在内存中寻找到上一个图像所占的内存空间,并对所寻找的内存空间进行释放,以使得这部分内存能够再次被使用。
S1032、将上一个图层所对应的图层标识进行清空。
终端在对上一个图层清除完成,并释放上一个图层所占用的内存空间之后,就会利用空值来对上一个图层的图层标识进行覆盖,从而达到将上一个图层的图层标识清空的目的,以避免在后续出现需要清除的对象不存在的错误。
示例性的,本申请实施例提供了对上一个图层进行清除的代码片段,如下:
Figure BDA0002478881750000161
其中,creating表示终端通过窗口视图控件正在创建新图层,mSurfaceControl表示上一个图层的图层标识,null为空值,mSurfaceControl!=null图层标识不为空值,也即图层标识存在;当图层标识存在时,调用mSurfaceControl.destroy(),其中,.destroy()为图层销毁方法,mSurfaceControl.destroy()即针对上一个图层调用图层销毁方法;mSurfaceControl=null表示用空值覆盖上一个图层的图层标识。经过上述代码片段,就能够实现对上一图层的清除。
本申请实施例中,终端能够在上一个图层存在时,通过窗口视图控件清除上一个图层,释放上一个图层所占据的内存空间,并将上一个图层对应的图层标识清空。如此,终端就能够对上一个图层及时清除,并且保证上一个图层不被过快清除,保证了页面内容能够正常显示。
在本申请的一些实施例中,基于图层标识,对上一个图层的存在进行判断,得到判断结果,即S102的具体实现过程,可以包括:S1021或S1022,如下:
S1021、当图层标识为空时,上一个图层不存在,生成表征上一个图层不存在的判断结果。
S1022、当图层标识不为空时,上一个图层存在,生成表征上一个图层存在的判断结果。
终端判断上一个图层是否存在,主要是通过图层标识是不是为空来进行判断的。当图层标识为空时,表明终端并没有获取到与上一个图层对应的图层标识,这时,上一个图层是不存在的,因此,终端会生成表征上一个图层不存在的判断结果。反之,当图层标识不为空时,表明终端获取到了与上一个图层对应的图层标识,此时,上一个图层显然存在,终端就会生成上一个图层存在的判断结果。
示例性的,当新图层的身份信息用编号5来表示时,终端就是要判断用编号4来表示的身份信息是不是存在,当存在用编号4表示的身份信息时,新图层的上一个图层,即图层4是存在的,从而图层4存在的判断结果;当不存在用编号4表示的身份信息时,图层4即不存在,生成图层4不存在的判断结果。这样,终端就能够得到判断结果。
本申请实施例中,终端能够通过判断图层标识是否为空,来判断上一个图层是否存在,从而生成判断结果,以便于后续终端基于判断结果来清除上一个图层。
基于图10,参见图11,图11是本申请实施例提供的显示窗口控制方法的一个可选的流程示意图二。在本申请的一些实施例中,在当通过窗口视图控件创建新图层时,获取新图层的上一个图层对应的图层标识之前,即S101之前,该方法还可以包括:S106-S107,如下:
S106、获取图层创建需求信息;图层创建需求信息表征了是否存在创建新图层的需求。
终端在开始创建新图层之前,是需要对是否要开始创建新图层进行判断的,只有当需要创建新图层时,终端才会通过窗口视图控件开始新图层的创建,否则,所创建出的新图层是没有意义的。终端在判断是否要开始创建新图层时,是先获取图层创建需求信息,然后对图层创建需求信息进行解读,从而得知是否要创建新图层。
进一步的,图层创建需求信息是终端对用户触发的事件进行解析后,所生成的信息。例如,用户在终端的显示界面上点击了某个应用程序,以打开该应用程序,终端对用户的点击事件进行解析,就能够得知用户想要启动该应用程序,这时,必须要使用新图层来呈现该应用程序的页面内容,因而,终端会生成存在创建新图层的需求的图层创建需求信息,以指引终端的底层操作系统来创建新图层。
S107、当图层创建需求信息表征存在创建新图层的需求时,调用窗口视图控件,以通过窗口视图控件开始创建新图层。
当终端明确需要创建新图层时,就会调用窗口视图控件,按照图层创建需求信息所要求的图层尺寸大小,来开始创建新图层,反之,当终端明确不需要创建新图层时,就不会调用窗口视图控件来进行图层创建工作,这时,终端可以根据其他的一些需求指令,来调用窗口视图控件,以通过窗口视图控件来对终端之前所创建出的图层,例如上一个图层进行显示尺寸改变等控制。可以理解的是,终端在通过窗口视图控件创建新图层时,也会为新图层生成身份信息。
本申请实施例中,终端可以先获取图层创建需求信息,以通过图层创建需求信息来明确是否要通过窗口视图控件开始创建新图层,如此,终端能够明确需要创建新图层的时机。
在本申请的一些实施例中,在根据判断结果,通过窗口视图控件对上一个图层进行清除之后,即S103之后,该方法还可以包括:S108-S109,如下:
S108、当完成对新图层的创建时,获取新图层的显示尺寸需求,并通过窗口视图控件,依据显示尺寸需求对新图层的尺寸进行调整,得到调整后的新图层。
在绝大部分情况下,终端都是会成功将上一个图层清除,并且完成新图层的创建的。当终端通过窗口视图控件,完成对新图层的创建时,可以继续通过窗口视图控件来对新图层进行显示控制,而不是在新图层创建之后就剥离窗口视图空间对新图层的控制权。这样,窗口视图控件就会从新图层创建开始,直至新图层被清除结束,一直具有对新图层的控制权,这样,终端可以通过窗口视图控件,来对新图层进行显示控制,从而当需要对新图层的尺寸进行调整时,能够及时控制新图层进行尺寸调整,这样,就能够避免对新图层的尺寸无法调整,从而避免页面跳转时发生半屏黑屏问题。
进一步的,终端会通过窗口视图控件,对新图层进行显示尺寸的调整时,也是要先获取待显示内容所要求的显示尺寸进行获取,即获取显示尺寸需求。接着,终端通过窗口视图控件,按照显示尺寸需求中的宽度与高度,来对新图层的宽度和高度进行调整,即对新图层在宽度和高度上进行拉长或者是缩短,以使得对新图层进行调整之后所得到的调整后的图层的尺寸,与显示尺寸需求相同,从而得到调整后的新图层。
S109、在调整后的新图层上显示待显示内容,完成显示窗口控制。
终端在得到调整后的新图层之后,终端就会将待显示内容绘制在调整后的新图层上,并进行渲染等操作,以在调整后的新图层上显示待显示内容,使得待显示内容可以完整、清楚的呈现。
示例性的,本申请实施例提供了对新图层的显示尺寸进行控制的示意图,参见图12,当新图层12-a的尺寸为1080*2400,而显示尺寸需求为2400*1080时,终端会通过窗口视图控件,对新图层12-a在宽度上进行拉长,在高度上进行压缩,以使得调整后的新图层12-b的尺寸为2400*1080,最后,终端会在调整后的新图层12-b上绘制待显示内容,以完成对新图层的显示尺寸的控制。
本申请实施例中,终端能够通过窗口视图控件,来对新图层的尺寸进行调整,使得调整后的新图层的尺寸与显示尺寸需求一致,这样,就能够使得待显示内容完整、清楚的呈现,从而杜绝半屏黑屏的问题。
在本申请的一些实施例中,当完成对新图层的创建时,获取显示尺寸需求,并通过窗口视图控件对新图层的尺寸进行调整,得到调整后的新图层,即S108的具体实现过程,可以包括:S1081-S1082,如下:
S1081、获取新图层所对应的应用程序的名称;其中,新图层用于呈现应用程序的待显示内容。
由于在实际使用中,终端上具有多个应用,在这其中,有一些需要频繁涉及页面跳转,或者是需要频繁创建新图层的应用程序,更容易出现半屏黑屏的问题,因此,终端可以针对这些应用程序,来单独实现对新图层的显示尺寸的控制,而对除了更容易出现半屏黑屏的应用程序之外的应用,不进行显示尺寸的控制。此时,终端可以先获取新图层所对应的应用程序的名称,即明确新图层是为了呈现哪个应用的待显示内容,从而明确是否要对新图层进行显示尺寸的控制。
S1082、当应用程序的名称不为空,并且应用程序的名称包含预设名称字段时,通过窗口视图控件,依据显示尺寸需求,对新图层的宽度和高度进行调整,得到调整后的新图层。
终端在获取到应用程序的名称时,就会对应用程序的名称进行条件判断。首先,终端需要判断应用名称是否为空,然后判断应用名称是否包含预设字段,只有当某个应用程序名称不为空,并且该应用程序的名称包含预设名称字段时,才能表明该应用程序经常出现半屏黑屏问题,这时,终端就会通过窗口视图控件,依据显示尺寸需求,来对新图层的显示尺寸进行调整,以避免半屏黑屏问题。
需要说明的是,在本申请的另一些实施例中,终端还会可以对所有在终端中安装的应用程序的图层,都通过窗口视图控件进行显示尺寸的控制,从而彻底杜绝半屏黑屏问题的出现。
可以理解的是,预设名称字段可以是根据实际需求进行设置的,例如,将经常出现半屏黑屏问题的应用程序的名称设置为预设名称字段,也可以将其他可能出现显示尺寸问题的应用程序的名称设置为预设名称字段,本申请实施例在此不作限定。
示例性的,对于终端中的多个应用程序,当射击类游戏经常出现半屏黑屏的问题时,终端可以将预设字段设置为“com.android.AFMainActivity”。当新图层所对应的应用名称不为空,并且包含“com.android.AFMainActivity”字段时,就会通过窗口视图空间,对该新图层进行显示尺寸的控制,以避免半屏黑屏问题。
示例性的,本申请实施例提供了对新图层进行显示控制的代码片段,如下:
Figure BDA0002478881750000211
其中,mName是新图层对应的应用程序的名称,mName.contains(“com.android.AFMainActivity”)表示新图层对应的应用名称包含预设名称字段“com.android.AFMainActivity”。Synchronized()表示锁定该过程。
本申请实施例中,当终端完成对新图层的创建时,会获取新图层对应的应用程序的名称,从而根据应用程序的名称,来判断是否要通过窗口视图控件,对新图层的显示尺寸进行控制,从而达到对容易出现半屏黑屏的问题的应用程序,来进行新图层的尺寸控制,以解决半屏黑屏问题。
在本申请的一些实施例中,窗口视图控件包括图层可视控制子控件、遍历处理控件和图层销毁子控件;通过窗口视图控件对上一个图层进行清除,即S103的实现过程,可以包括:S1033-S1035,如下:
S1033、获取上一个图层的可视性标识,并通过图层可视控制子控件,对上一个图层的可视性标识进行更改,得到更改后的可视性标识。
终端通过窗口视图空间对上一个图层进行清除时,首先是要获取上一个图层的可视性标识,然后调用窗口视图空间中的图层可视子控件,利用图层可视子控件对上一个图层的可视性标识进行更改,并将更改所得到的可视性标识,记为更改后的可视性标识。
示例性的,在安卓系统中,窗口视图控件为SurfaceView,图层可视控制子控件就为handleAppVisibility,可视性标识即为mAppVisible,此时,终端对上一个图层的可视性标识进行更改,即是调用handleAppVisibility,对mAppVisible的值进行修改。
S1034、当更改后的可视性标识表征上一个图层不可见时,调用遍历处理控件,对上一个图层进行隐藏。
S1035、通过图层销毁子控件,对隐藏后的上一个图层进行清除。
当终端得到更改后的可视性标识之后,就会读取更改后的可视性标识的具体内容,当更改后的可视性标识表征上一个图层不可见,即上一个图层需要隐藏时,终端便会先调用遍历处理控件,来实现对上一个图层隐藏的,之后,终端在通过图层销毁子控件,对已经隐藏的上一个图层进行清除,并释放上一个图层所占用的内存空间。
示例性的,图13提供了清除上一个图层的过程示意图,参见图13,当终端通过图层可视控制子控件13-1,即handleAppVisibility,将上一个图层的可视性标识,即mAppVisible的值,改为false时,终端就会调用遍历处理控件13-2,即scheduleTraversals和performTraversals,将上一个图层隐藏,之后,终端会调用图层销毁子控件13-3,即destroy()方法,销毁已经隐藏的上一个图层,从而完成对上一个图层的清除。
本申请实施例中,窗口视图控件包括图层可视控制子控件、遍历处理控件和图层销毁子控件,并通过图层可视子控件对上一个图层的可视性标识进行更改,通过遍历处理控件将上一个图层隐藏,最后通过图层销毁子控件对已经隐藏的上一个图层进行清除,从而完成对上一个图层的清除。
在本发明的一些实施例中,窗口视图控件包括图层可视子控件、遍历处理控件和图层创建子控件;通过窗口视图控件创建新图层,即S101的具体实现过程,可以包括:S1011-S1013,如下:
S1011、通过图层可视子控件,生成新图层的可视性标识。
S1012、当新图层的可视性标识表征新图层可见时,调用遍历处理控件,接收视图刷新指令。
S1013、响应视图刷新指令,通过图层创建子控件,创建出新图层。
当终端通过窗口视图控件创建新图层时,是先调用图层可视子控件,为新图层生成可视性标识,即生成表征新图层可见的可视性标识。当新图层的可视性标识表征新图层可见时,终端就会继续调用遍历处理控件,等待视图刷新指令(VSYNC),当接收到视图刷新指令时,终端会响应视图刷新指令,通过视图创建子控件,开始新图层的创建。
示例性的,图14提供了创建新图层的过程示意图,参见图14,当终端通过图层可视控制子控件14-1,即handleAppVisibility,生成表征新图层可见的可视性标识,即将新图层的mAppVisible的值,改为true,然后,终端会调用遍历处理控件14-2,即scheduleTraversals和performTraversals,等待VSYNC信号,之后,终端会调用图层创建子控件14-3,即creating()方法,创建出新图层。
本发明实施例中,终端可以通过图层可视控制子控件,生成新图层的可视性标识,当新图层的可视性标识表征新图层可见时,调用遍历处理控件,接收视图刷新指令,并响应视图刷新指令,通过图层创建子控件,创建出新图层。这样,终端就完成了对新图层的创建过程。
下面继续说明本申请实施例提供的窗口显示控制装置100的实施为软件模块的示例性结构,在一些实施例中,参见图15,是本申请实施例提供的窗口显示控制装置100的结构示意图,如图15所示,窗口显示控制装置100中的软件模块可以包括:
获取模块110,用于当通过窗口视图控件创建新图层时,获取所述新图层的上一个图层对应的图层标识;其中,所述图层标识是通过所述窗口视图控件创建所述上一个图层时所生成的;
判断模块120,用于基于所述图层标识,对所述上一个图层的存在进行判断,得到判断结果;所述判断结果表征所述上一个图层是否存在;
清除模块130,用于根据所述判断结果,通过所述窗口视图控件对所述上一个图层进行清除;
控制模块140,用于所述上一个图层清除失败,且所述新图层创建失败时,获取显示需求尺寸和待显示内容;所述显示尺寸需求表征所述待显示内容所要求的尺寸;通过所述窗口视图控件,依据所述显示尺寸需求对所述上一个图层的尺寸进行调整,得到调整后的上一个图层,并在所述调整后的上一个图层上,显示所述待显示内容,完成显示窗口控制。
在本申请的一些实施例中,所述清除模块130,具体用于当所述判断结果表征所述上一个图层存在时,通过所述窗口视图控件对所述上一个图层进行清除;将所述上一个图层所对应的所述图层标识进行清空。
在本申请的一些实施例中,所述判断模块120,具体用于当所述图层标识为空时,所述上一个图层不存在,生成表征所述上一个图层不存在的所述判断结果;当所述图层标识不为空时,所述上一个图层存在,生成表征所述上一个图层存在的所述判断结果。
在本申请的一些实施例中,所述窗口显示控制装置100还包括:创建模块150;
所述获取模块110,还用于获取图层创建需求信息;所述图层创建需求信息表征了是否存在创建所述新图层的需求;
所述创建模块150,用于当所述图层创建需求信息表征存在创建所述新图层的需求时,调用所述窗口视图控件,以通过所述窗口视图控件开始创建所述新图层。
在本申请的一些实施例中,所述控制模块140,还用于当完成对所述新图层的创建时,获取所述显示尺寸需求,并通过所述窗口视图控件,依据所述显示尺寸需求对所述新图层的尺寸进行调整,得到调整后的新图层;在所述调整后的新图层上显示所述待显示内容,完成所述显示控制。
在本申请的一些实施例中,所述控制模块140,具体用于获取所述新图层所对应的应用程序的名称;其中,所述新图层用于呈现所述应用程序的待显示内容;当所述应用程序的名称不为空,并且所述应用程序的名称包含预设名称字段时,通过所述窗口视图控件,依据所述显示尺寸需求,对所述新图层的宽度和高度进行调整,得到所述调整后的新图层。
在本申请的一些实施例中,所述窗口视图控件包括图层可视控制子控件、遍历处理控件和图层销毁子控件;
所述清除模块130,具体用于获取所述上一个图层的可视性标识,并通过所述图层可视控制子控件,对所述上一个图层的可视性标识进行更改,得到更改后的可视性标识;当所述更改后的可视性标识表征所述上一个图层不可见时,调用所述遍历处理控件,对所述上一个图层进行隐藏;通过所述图层销毁子控件,对隐藏后的所述上一个图层进行清除。
在本发明的一些实施例中,所述创建模块150,具体用于通过所述图层可视控制子控件,生成所述新图层的可视性标识;当所述新图层的可视性标识表征所述新图层可见时,调用所述遍历处理控件,接收视图刷新指令;响应所述视图刷新指令,通过所述图层创建子控件,创建出所述新图层。
本申请实施例提供一种终端,用于执行本申请实施例提供的显示窗口控制方法;图16为本申请实施例提供的终端200的结构示意图,如图16所示,该终端200包括:处理器210、存储器220和通信总线230,存储器220通过通信总线230与处理器210进行通信,存储器220存储处理器210可执行的一个或者多个程序,当一个或者多个程序被执行时,通过处理器210执行如前述实施例的任意一种显示窗口控制方法。
本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器210执行时,将引起处理器210执行本申请实施例提供的显示窗口控制方法,例如,如图10和图11示出的方法。
在一些实施例中,存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (9)

1.一种显示窗口控制方法,其特征在于,包括:
当通过窗口视图控件创建新图层时,获取所述新图层的上一个图层对应的图层标识;其中,所述图层标识是通过所述窗口视图控件创建所述上一个图层时所生成的;所述窗口视图控件包括图层可视控制子控件、遍历处理控件、图层销毁子控件和图层创建子控件;
基于所述图层标识,对所述上一个图层的存在进行判断,得到判断结果;所述判断结果表征所述上一个图层是否存在;
根据所述判断结果,通过所述窗口视图控件对所述上一个图层进行清除;
当所述上一个图层清除失败,且所述新图层创建失败时,获取显示尺寸需求和待显示内容;所述显示尺寸需求表征所述待显示内容所要求的尺寸;
通过所述窗口视图控件,依据所述显示尺寸需求对所述上一个图层的尺寸进行调整,得到调整后的上一个图层,并在所述调整后的上一个图层上,显示所述待显示内容,完成显示窗口控制;
所述通过窗口视图控件创建新图层,包括:通过所述图层可视控制子控件,生成所述新图层的可视性标识,当所述新图层的可视性标识表征所述新图层可见时,调用所述遍历处理控件,接收视图刷新指令,响应所述视图刷新指令,通过所述图层创建子控件,创建出所述新图层;
所述通过所述窗口视图控件对所述上一个图层进行清除,包括:获取所述上一个图层的可视性标识,并通过所述图层可视控制子控件,对所述上一个图层的可视性标识进行更改,得到更改后的可视性标识,当所述更改后的可视性标识表征所述上一个图层不可见时,调用所述遍历处理控件,对所述上一个图层进行隐藏,通过所述图层销毁子控件,对隐藏后的所述上一个图层进行清除。
2.根据权利要求1所述的方法,其特征在于,所述根据所述判断结果,通过所述窗口视图控件对所述上一个图层进行清除,包括:
当所述判断结果表征所述上一个图层存在时,通过所述窗口视图控件对所述上一个图层进行清除;
将所述上一个图层所对应的所述图层标识进行清空。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述图层标识,对所述上一个图层的存在进行判断,得到判断结果,包括:
当所述图层标识为空时,所述上一个图层不存在,生成表征所述上一个图层不存在的所述判断结果;
当所述图层标识不为空时,所述上一个图层存在,生成表征所述上一个图层存在的所述判断结果。
4.根据权利要求1或2所述的方法,其特征在于,在所述当通过窗口视图控件创建新图层时,获取所述新图层的上一个图层对应的图层标识之前,所述方法还包括:
获取图层创建需求信息;所述图层创建需求信息表征了是否存在创建所述新图层的需求;
当所述图层创建需求信息表征存在创建所述新图层的需求时,调用所述窗口视图控件,以通过所述窗口视图控件开始创建所述新图层。
5.根据权利要求1或2所述的方法,其特征在于,在所述根据所述判断结果,通过所述窗口视图控件对所述上一个图层进行清除之后,所述方法还包括:
当完成对所述新图层的创建时,获取所述显示尺寸需求,并通过所述窗口视图控件,依据所述显示尺寸需求对所述新图层的尺寸进行调整,得到调整后的新图层;
在所述调整后的新图层上显示所述待显示内容,完成所述显示窗口控制。
6.根据权利要求5所述的方法,其特征在于,所述通过所述窗口视图控件,依据所述显示尺寸需求对所述新图层的尺寸进行调整,得到调整后的新图层,包括:
获取所述新图层所对应的应用程序的名称;其中,所述新图层用于呈现所述应用程序的待显示内容;
当所述应用程序的名称不为空,并且所述应用程序的名称包含预设名称字段时,通过所述窗口视图控件,依据所述显示尺寸需求,对所述新图层的宽度和高度进行调整,得到所述调整后的新图层。
7.一种显示窗口控制装置,其特征在于,包括:
获取模块,用于当通过窗口视图控件创建新图层时,获取所述新图层的上一个图层对应的图层标识;其中,所述图层标识是通过所述窗口视图控件创建所述上一个图层时所生成的;所述窗口视图控件包括图层可视控制子控件、遍历处理控件、图层销毁子控件和图层创建子控件;所述通过窗口视图控件创建新图层,包括:通过所述图层可视控制子控件,生成所述新图层的可视性标识,当所述新图层的可视性标识表征所述新图层可见时,调用所述遍历处理控件,接收视图刷新指令,响应所述视图刷新指令,通过所述图层创建子控件,创建出所述新图层;
判断模块,用于基于所述图层标识,对所述上一个图层的存在进行判断,得到判断结果;所述判断结果表征所述上一个图层是否存在;
清除模块,用于根据所述判断结果,通过所述窗口视图控件对所述上一个图层进行清除;所述通过所述窗口视图控件对所述上一个图层进行清除,包括:获取所述上一个图层的可视性标识,并通过所述图层可视控制子控件,对所述上一个图层的可视性标识进行更改,得到更改后的可视性标识,当所述更改后的可视性标识表征所述上一个图层不可见时,调用所述遍历处理控件,对所述上一个图层进行隐藏,通过所述图层销毁子控件,对隐藏后的所述上一个图层进行清除;
控制模块,用于当所述上一个图层清除失败,且所述新图层创建失败时,获取显示尺寸需求和待显示内容;所述显示尺寸需求表征所述待显示内容所要求的尺寸;通过所述窗口视图控件,依据所述显示尺寸需求对所述上一个图层的尺寸进行调整,得到调整后的上一个图层,并在所述调整后的上一个图层上,显示所述待显示内容,完成显示窗口控制。
8.一种终端,其特征在于,包括:
存储器,用于存储可执行显示窗口控制指令;
处理器,用于执行所述存储器中存储的可执行显示窗口控制指令时,实现权利要求1至6任一项所述的方法。
9.一种存储介质,其特征在于,存储有可执行显示窗口控制指令,用于引起处理器执行时,实现权利要求1至6任一项所述的方法。
CN202010373112.7A 2020-05-06 2020-05-06 一种显示窗口控制方法、装置、终端及存储介质 Active CN111625238B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010373112.7A CN111625238B (zh) 2020-05-06 2020-05-06 一种显示窗口控制方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010373112.7A CN111625238B (zh) 2020-05-06 2020-05-06 一种显示窗口控制方法、装置、终端及存储介质

Publications (2)

Publication Number Publication Date
CN111625238A CN111625238A (zh) 2020-09-04
CN111625238B true CN111625238B (zh) 2023-02-03

Family

ID=72270222

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010373112.7A Active CN111625238B (zh) 2020-05-06 2020-05-06 一种显示窗口控制方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN111625238B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114173052A (zh) * 2020-09-10 2022-03-11 西安诺瓦星云科技股份有限公司 视频处理方法、视频处理装置和视频处理设备
CN114489336B (zh) * 2022-01-21 2024-03-29 北京有竹居网络技术有限公司 多媒体展示方法、装置、可读介质及电子设备
CN115756690A (zh) * 2022-11-15 2023-03-07 百富计算机技术(深圳)有限公司 一种桌面窗口显示方法、装置、终端及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107748686A (zh) * 2017-11-30 2018-03-02 广东欧珀移动通信有限公司 应用程序的启动优化方法、装置、存储介质及智能终端
CN108052365A (zh) * 2017-12-19 2018-05-18 深圳市四格互联信息技术有限公司 用户界面的组件生成方法及装置
CN108196930A (zh) * 2018-01-18 2018-06-22 腾讯科技(深圳)有限公司 应用程序处理方法、装置、存储介质和计算机设备
CN109471587A (zh) * 2018-11-13 2019-03-15 掌阅科技股份有限公司 基于Java虚拟机的手写内容的显示方法及电子设备
CN110347464A (zh) * 2019-06-26 2019-10-18 腾讯科技(深圳)有限公司 应用程序的用户界面渲染方法、装置、介质及电子设备
CN111026492A (zh) * 2019-12-10 2020-04-17 北京普源精电科技有限公司 一种显示区域自动管理交互的设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011128962A (ja) * 2009-12-18 2011-06-30 Canon Inc 画像処理装置、画像処理方法、及びコンピュータプログラム
US20140019865A1 (en) * 2012-07-13 2014-01-16 Whamix Inc. Visual story engine

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107748686A (zh) * 2017-11-30 2018-03-02 广东欧珀移动通信有限公司 应用程序的启动优化方法、装置、存储介质及智能终端
CN108052365A (zh) * 2017-12-19 2018-05-18 深圳市四格互联信息技术有限公司 用户界面的组件生成方法及装置
CN108196930A (zh) * 2018-01-18 2018-06-22 腾讯科技(深圳)有限公司 应用程序处理方法、装置、存储介质和计算机设备
CN109471587A (zh) * 2018-11-13 2019-03-15 掌阅科技股份有限公司 基于Java虚拟机的手写内容的显示方法及电子设备
CN110347464A (zh) * 2019-06-26 2019-10-18 腾讯科技(深圳)有限公司 应用程序的用户界面渲染方法、装置、介质及电子设备
CN111026492A (zh) * 2019-12-10 2020-04-17 北京普源精电科技有限公司 一种显示区域自动管理交互的设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Graph-based detection algorithms for layered space-time architectures;Hu J 等;《IEEE Journal on Selected Areas in Communications》;20080201;第26卷(第02期);269-280 *
基于元模型的视图层PIM建模方法;曹伯翰 等;《现代电子技术》;20121029;第35卷(第13期);138-142 *

Also Published As

Publication number Publication date
CN111625238A (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
CN111625238B (zh) 一种显示窗口控制方法、装置、终端及存储介质
CN108920240B (zh) 用户界面显示方法、装置、终端及存储介质
CN106155454B (zh) 一种界面显示方法、装置及电子设备
CN104216752B (zh) 一种基于窗口的信息加载方法及装置
CN106648869B (zh) 一种智能终端应用切换方法
US5274819A (en) Management system for memory resident computer programs
US20110271226A1 (en) Integrated Icon View in a Server-Based Computing Environment
CN108376094B (zh) 通知消息显示方法、装置、计算机设备和存储介质
WO2020019458A1 (zh) 混合应用的页面切换方法、框架、计算机设备及存储介质
WO2009049179A1 (en) Method for selectively remoting windows
CN113467666B (zh) 一种调整应用窗口的方法和装置
CN109002295A (zh) 一种静态代码扫描方法、系统、服务器及存储介质
CN107132962A (zh) 导航栏控制方法及装置
CN112612436A (zh) 一种投屏切换方法、装置、设备及存储介质
CN112162672A (zh) 信息流的显示处理方法、装置、电子设备及存储介质
CN106406862A (zh) 一种屏幕获取方法及系统
CN111857857A (zh) 界面展示方法、装置和设备
JP2555938B2 (ja) 仮想ウインドウによる仮想端末方式
CN106792193B (zh) 一种基于Android电视的修复系统及修复方法
CN113157468B (zh) 跨进程信息处理方法、控制器、终端和存储介质
CN111190674B (zh) 统一处理触摸穿透方法、装置、存储介质及一体机设备
CN109521924B (zh) 一种辅助用户选择目标应用的方法和装置
CN107577422B (zh) 一种基于双域空间的照片存储方法及装置
CN111813566B (zh) 跨进程的拖拽方法、装置、设备及计算机可读存储介质
CN113378096B (zh) 一种显示设备及浏览器残留帧清除方法

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