一种弹出窗口管理方法及装置与流程

文档序号:15776121发布日期:2018-10-30 15:20阅读:239来源:国知局
一种弹出窗口管理方法及装置与流程

本发明涉及界面显示方法技术领域,具体而言,涉及一种弹出窗口管理方法及装置。



背景技术:

在安卓应用开发中,弹出二级界面的方式一般是跳转activity、popupwindow、dialog或者dialogfragment。

但使用activity跳转会导致系统反应慢,并会导致二级界面难以管理;而使用popupwindow做业务逻辑的弹出式二级页面开发时,很容易出现因为无效token导致系统崩溃的问题;使用dialog做弹出式二级界面有生命周期不全面的问题;而使用dialogfragment时,不能在activity处于后台的时候尝试弹出界面,否则会导致程序崩溃。



技术实现要素:

有鉴于此,本发明的目的在于提供一种弹出窗口管理方法及装置,以解决上述问题。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种弹出窗口管理方法,所述弹出窗口管理方法包括:

获取预建立的弹出窗口列表,所述弹出窗口列表包括多个按时间顺序排列的弹出窗口;

按照所述弹出窗口列表的顺序,依次依据通过判断activity是否可见而生成的判断结果、每个所述弹出窗口的初始状态类型及当前窗口状态信息确定每个所述弹出窗口的实际状态类型及实际窗口状态信息;

依据实际窗口状态信息及每个所述弹出窗口的实际状态类型显示、移除或隐藏每个所述弹出窗口。

进一步地,所述按照所述弹出窗口列表的顺序,依次依据通过判断activity是否可见而生成的判断结果、每个所述弹出窗口的初始状态类型及当前窗口状态信息确定每个所述弹出窗口的实际状态类型及实际窗口状态信息的步骤包括:

当所述弹出窗口的状态类型为待添加类型或隐藏类型、所述判断结果为所述activity可见且所述初始窗口状态信息与第一预设标识匹配时,利用预设定的算法发起显示窗口操作事务,确定所述实际窗口状态信息为第二预设标识且所述弹出窗口的实际状态类型为显示类型。

进一步地,所述按照所述弹出窗口列表的顺序,依次依据通过判断activity是否可见而生成的判断结果、每个所述弹出窗口的初始状态类型及当前窗口状态信息确定每个所述弹出窗口的实际状态类型及实际窗口状态信息的步骤还包括:

当所述弹出窗口的状态类型为显示类型、所述判断结果为所述activity可见且所述窗口状态信息与第一预设标识不匹配时,利用预设定的算法发起隐藏窗口操作事务,确定所述弹出窗口的实际状态类型为隐藏类型。

进一步地,所述按照所述弹出窗口列表的顺序,依次依据通过判断activity是否可见而生成的判断结果、每个所述弹出窗口的初始状态类型及当前窗口状态信息确定每个所述弹出窗口的实际状态类型及实际窗口状态信息的步骤还包括:

当所述弹出窗口的状态类型为待删除类型且所述判断结果为所述activity可见时,利用预设定的算法发起移除窗口操作事务。

进一步地,所述依据实际窗口状态信息及每个所述弹出窗口的实际状态类型显示、移除或隐藏每个所述弹出窗口的步骤包括:

当所述窗口状态信息与第二预设标识匹配时,将预建立的弹出窗口容器的显示属性设置为显示类型以显示所述实际状态类型为显示类型的所述弹出窗口;

当所述窗口状态信息与第二预设标识不匹配时,将预建立的弹出窗口容器的显示属性设置为隐藏类型以隐藏所述初始状态类型为显示类型的弹出窗口。

进一步地,所述弹出窗口管理方法还包括:

判断是否存在弹出窗口操作事务,其中,所述弹出窗口操作事务包括显示窗口操作事务、隐藏窗口操作事务及移除窗口操作事务;

当存在所述弹出窗口操作事务时,隐藏虚拟键盘。

进一步地,所述弹出窗口管理方法还包括:

判断activity是否可见;

当所述activity可见时,提交弹出窗口操作事务。

第二方面,本发明实施例还提供了一种弹出窗口管理装置,所述弹出窗口管理装置包括:

获取单元,用于获取预建立的弹出窗口列表,所述弹出窗口列表包括多个按时间顺序排列的弹出窗口;

状态确定单元,用于按照所述弹出窗口列表的顺序,依次依据通过判断activity是否可见而生成的判断结果、每个所述弹出窗口的初始状态类型及当前窗口状态信息确定每个所述弹出窗口的实际状态类型及实际窗口状态信息;

显示单元,用于依据实际窗口状态信息及每个所述弹出窗口的实际状态类型显示、移除或隐藏每个所述弹出窗口。

进一步地,所述状态确定单元还用于当所述弹出窗口的状态类型为待添加类型或隐藏类型、所述判断结果为所述activity可见且所述初始窗口状态信息与第一预设标识匹配时,利用预设定的算法发起显示窗口操作事务,确定所述实际窗口状态信息为第二预设标识且所述弹出窗口的实际状态类型为显示类型。

进一步地,所述状态确定单元还用于当所述弹出窗口的状态类型为显示类型、所述判断结果为所述activity可见且所述窗口状态信息与第一预设标识不匹配时,利用预设定的算法发起隐藏窗口操作事务,确定所述弹出窗口的实际状态类型为隐藏类型。

本发明实施例提供的一种弹出窗口管理方法及装置,通过获取预建立的弹出窗口列表,弹出窗口列表包括多个按时间顺序排列的弹出窗口,并按照弹出窗口列表的顺序,依次依据通过判断activity是否可见而生成的判断结果、每个弹出窗口的初始状态类型及当前窗口状态信息确定每个弹出窗口的实际状态类型及实际窗口状态信息,最后依据每个弹出窗口的实际窗口状态信息及每个弹出窗口的实际状态类型显示、移除或隐藏每个弹出窗口;由于是有序地对列表中的每个弹出窗口进行统一处理后,再确定每个弹出窗口显示与否,从而可以在activity处于后台的时候弹出,避免了弹出窗口上有popupwindow会导致程序崩溃的问题,并且使得弹出窗口具有完整的生命周期,可以方便的实现页面数据刷新处理。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的用户终端的功能框图。

图2示出了本发明实施例提供的弹出窗口管理方法的流程图。

图3示出了图2中步骤s203的具体流程图。

图4示出了本发明实施例提供的弹出窗口管理方法的第二种流程图。

图5示出了本发明实施例提供的弹出窗口管理方法的第三种流程图。

图6示出了本发明实施例提供的弹出窗口管理装置的功能模块图。

图标:100-用户终端;101-存储器;102-存储控制器;103-处理器;104-外设接口;105-射频单元;106-触控屏幕;200-弹出窗口管理装置;210-获取单元;220-状态确定单元;230-显示单元;240-判断单元;250-键盘隐藏单元;260-操作事务提交单元。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间可见任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还可见另外的相同要素。

请参阅图1,图1示出了一种可应用于本发明实施例中的用户终端100的功能框图。如图1所示,用户终端100包括弹出窗口管理装置200、存储器101、存储控制器102,一个或多个(图中仅示出一个)处理器103、外设接口104、射频单元105、触控屏幕106等。这些组件通过一条或多条通讯总线/信号线相互通讯。所述弹出窗口管理装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述用户终端100的操作系统(operatingsystem,os)中的软件功能单元。

存储器101可用于存储软件程序以及单元,如本发明实施例中的弹出窗口管理装置200及方法所对应的程序指令/单元,处理器103通过运行存储在存储器101内的软件程序以及单元,从而执行各种功能应用以及数据处理,如本发明实施例提供的弹出窗口管理方法。存储器101可包括高速随机存储器101,还可包括非易失性存储器101,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器101。处理器103以及其他可能的组件对存储器101的访问可在存储控制器102的控制下进行。

外设接口104将各种输入/输出装置耦合至处理器103以及存储器101。在一些实施例中,外设接口104、处理器103以及存储控制器102可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。

射频单元105用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯、进行数据传输。

触控屏幕106用于在用户终端100与用户之间提供一个输出及输入界面,以实现用户终端100与用户的交互。触控屏幕106能感应到来自该触控屏幕106上的触控操作,并将该感应到的触控操作交由处理器103进行处理。

可以理解,图1所示的结构仅为示意,用户终端100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

第一实施例

本发明实施例提供了一种弹出窗口管理方法,用于依据activity的生命周期以及每个弹出窗口的初始状态类型以及初始窗口状态信息,依次显示或者消失。请参阅图2,为本发明实施例提供的弹出窗口管理方法的流程图。该弹出窗口管理方法包括:

步骤s201:获取预建立的弹出窗口列表。

当用户需要获取弹出窗口时,通过触控屏幕106向处理器103发起显示请求,此时处理器103显示请求并生成弹出窗口,并将弹出窗口放入弹出窗口列表中,从而建立弹出窗口列表。

需要说明的是,该弹出窗口列表包括多个按时间顺序排列的弹出窗口。处理器103通过获取预建立的弹出窗口列表,可以依次对弹出窗口列表中包含的每个弹出窗口依次进行处理。

步骤s202:按照弹出窗口列表的顺序,依次依据通过判断activity是否可见而生成的判断结果、每个弹出窗口的初始状态类型及当前窗口状态信息确定每个弹出窗口的实际状态类型及实际窗口状态信息。

其中,弹出窗口的初始状态类型主要包括四种:分别为待添加类型、显示类型、隐藏类型以及待删除类型。其中,每种初始状态类型对应有不同的确定实际状态类型及实际窗口状态信息的方式。

第一种:当弹出窗口的初始状态类型为待添加类型时,判断activity是否可见以及当前窗口状态信息是否与第一预设标识匹配,如果是,则利用预设定的算法发起显示窗口操作事务,确定实际窗口状态信息为第二预设标识且弹出窗口的实际状态类型为显示类型。

其中,通过判断activity是否可见可确定是否能发起弹出窗口操作事务,若在activity不可见时发起显示弹出操作事务会引起系统崩溃。

此外,当前窗口状态信息与第一预设标识匹配表示当前时刻显示屏幕无弹出窗口显示。

需要说明的是,利用预设定的fragmenttransaction的api可以发起显示窗口操作事务;而确定弹出窗口的实际状态类型为显示类型以及实际窗口状态信息为第二预设标识则表明,此时显示屏幕有待显示的弹出窗口。

第二种:当弹出窗口的状态类型为显示类型时,判断activity是否可见以及当前窗口状态信息是否与第一预设标识不匹配,如果是,则利用预设定的算法发起隐藏窗口操作事务,确定弹出窗口的实际状态类型为隐藏类型。

可以理解地,当弹出窗口的状态类型为显示类型,activity可见且当前窗口状态信息与第一预设标识不匹配时,表明当前状态下触控屏幕106已经有待显示的弹出窗口,因此此时利用预设定的算法发起隐藏窗口操作事务并将弹出窗口的实际状态类型切换为隐藏类型,以避免存在两个显示状态的弹出窗口引起系统崩溃。

相反地,当弹出窗口的状态类型为显示类型但当前窗口状态信息与第一预设标识匹配时,表当前状态下触控屏幕106无待显示的弹出窗口,因此将实际窗口状态信息切换为第二预设标识,以显示该弹出窗口。

第三种:当弹出窗口的初始状态类型为隐藏时,判断activity是否可见以及当前窗口状态信息是否与第一预设标识匹配,如果是,则利用预设定的算法发起显示窗口操作事务,确定实际窗口状态信息为第二预设标识且弹出窗口的实际状态类型为显示类型。

相反地,当满足activity不可见或者当前窗口状态信息与第一预设标识不匹配任意一个条件时,处理器103不对实际窗口状态信息及实际状态类型进行切换。

第四种:当弹出窗口的初始状态类型为待删除类型时,判断activity是否可见,如果是,则利用预设定的算法发起移除窗口操作事务。

需要说明的是,显示窗口操作事务、隐藏窗口操作事务以及移除窗口操作事务均为弹出窗口操作事务。可以理解地,通过for循环逻辑可实现步骤s202。请参阅图3,设置一个变量n,表示待处理的弹出窗口数量。获取弹出窗口列表中包含的弹出窗口的数量,并以该弹出窗口的数量减去1作为变量n初始值,通过以n≥0作为进入for循环的条件。

例如,当用户通过触控屏幕106向处理器103发起显示请求时,处理器103在弹出窗口列表的最末位置生成一个待添加类型的弹出窗口,在activity可见以及当前窗口状态信息与第一预设标识匹配时,表明此时可以发起显示弹出操作事务且触控屏幕106并无弹出窗口显示,因此此时利用预设定的算法发起显示窗口操作事务,将实际窗口状态信息切换为第二预设标识且将弹出窗口的实际状态类型切换为显示类型,接着变量n自减1;与此同时,与待添加类型的弹出窗口相邻的前一个弹出窗口的类型应当为之前显示的弹出窗口,从而该弹出窗口的初始状态类型为显示类型,此时由于在第一次运行过程中已经将实际窗口状态信息切换为第二预设标识,因此在activity可见的情况下,将弹出窗口的实际状态类型为隐藏类型,接着变量n自减1;由于上一个弹出窗口的初始状态类型为显示类型,因此当前弹出窗口的初始状态类型应当为隐藏类型,而在第一次运行过程中已经将实际窗口状态信息切换为第二预设标识,因此仅仅使变量n自减1,以表明处理过该弹出窗口;以此类推,直至n<0时,弹出窗口列表中所有的弹出窗口都已经被处理过,因此跳出循环,执行下一步骤。

步骤s203:依据每个弹出窗口的实际窗口状态信息及每个弹出窗口的实际状态类型显示、移除或隐藏每个弹出窗口。

具体地,判断实际窗口状态信息是否与第二显示预设标识匹配,如果是,则将预建立的弹出窗口容器的显示属性设置为显示类型以显示实际状态类型为显示类型的弹出窗口;如果否,则将预建立的弹出窗口容器的显示属性设置为隐藏类型以隐藏初始状态类型为显示类型的弹出窗口。

此外,处理器103还可以通过在存在弹出窗口操作事务时,自动隐藏虚拟键盘。具体地,如图4所示,该弹出窗口管理方法还包括:

步骤s204:判断是否存在弹出窗口操作事务,如果是,则执行步骤s205;如果否,则执行步骤s203。

步骤s205:隐藏虚拟键盘。

需要说明的是,在预建立的弹出窗口容器的点击事件中利用inputmethodmanager的api可以隐藏键盘。即,当用户点击显示界面的空白处将隐藏虚拟键盘。

此外,如图5所示,该弹出窗口管理方法还包括:

步骤s206:判断activity是否可见,如果是,则执行步骤s207;如果否,则执行步骤s203。

步骤s207:提交弹出窗口操作事务。

第二实施例

请参阅图6,图6为本发明较佳实施例提供的一种弹出窗口管理装置200。需要说明的是,本实施例所提供的弹出窗口管理装置200,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该弹出窗口管理装置200包括获取单元210、状态确定单元220、显示单元230、判断单元240、键盘隐藏单元250以及操作事务提交单元260。

其中,获取单元210用于获取预建立的弹出窗口列表。

可以理解地,在一种优选的实施例中,获取单元210可用于执行步骤s201。

状态确定单元220用于按照弹出窗口列表的顺序,依次依据通过判断activity是否可见而生成的判断结果、每个弹出窗口的初始状态类型及当前窗口状态信息确定每个弹出窗口的实际状态类型及实际窗口状态信息。

具体地,状态确定单元220用于当弹出窗口的状态类型为待添加类型或隐藏类型、判断结果为activity可见且初始窗口状态信息与第一预设标识匹配时,利用预设定的算法发起显示窗口操作事务,确定实际窗口状态信息为第二预设标识且弹出窗口的实际状态类型为显示类型。

状态确定单元220还用于当弹出窗口的状态类型为显示类型、判断结果为activity可见且窗口状态信息与第一预设标识不匹配时,利用预设定的算法发起隐藏窗口操作事务,确定弹出窗口的实际状态类型为隐藏类型。

状态确定单元220还用于当弹出窗口的状态类型为待删除类型且判断结果为activity可见时,利用预设定的算法发起移除窗口操作事务。

可以理解地,在一种优选的实施例中,状态确定单元220可用于执行步骤s202。

显示单元230用于依据实际窗口状态信息及每个弹出窗口的实际状态类型显示、移除或隐藏每个弹出窗口。

具体地,显示单元230用于当窗口状态信息与第二预设标识匹配时,将预建立的弹出窗口容器的显示属性设置为显示类型以显示实际状态类型为显示类型的弹出窗口。

显示单元230还用于当窗口状态信息与第二预设标识不匹配时,将预建立的弹出窗口容器的显示属性设置为隐藏类型以隐藏初始状态类型为显示类型的弹出窗口。

可以理解地,在一种优选的实施例中,显示单元230可用于执行步骤s203。

判断单元240用于判断是否存在弹出窗口操作事务。

可以理解地,在一种优选的实施例中,判断单元240可用于执行步骤s204。

键盘隐藏单元250,用于当存在弹出窗口操作事务时,隐藏虚拟键盘。

可以理解地,在一种优选的实施例中,键盘隐藏单元250可用于执行步骤s205。

判断单元240还用于判断activity是否可见。

可以理解地,在一种优选的实施例中,判断单元240可用于执行步骤s206。

操作事务提交单元260用于当activity可见时提交弹出窗口操作事务。

可以理解地,在一种优选的实施例中,操作事务提交单元260可用于执行步骤s207。

综上所述,本发明实施例提供的一种弹出窗口管理方法及装置,通过获取预建立的弹出窗口列表,弹出窗口列表包括多个按时间顺序排列的弹出窗口,并按照弹出窗口列表的顺序,依次依据通过判断activity是否可见而生成的判断结果、每个弹出窗口的初始状态类型及当前窗口状态信息确定每个弹出窗口的实际状态类型及实际窗口状态信息,最后依据每个弹出窗口的实际窗口状态信息及每个弹出窗口的实际状态类型显示、移除或隐藏每个弹出窗口;由于是有序地对列表中的每个弹出窗口进行统一处理后,再确定每个弹出窗口显示与否,从而可以在activity处于后台的时候弹出,避免了弹出窗口上有popupwindow会导致程序崩溃的问题,并且使得弹出窗口具有完整的生命周期,可以方便的实现页面数据刷新处理。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个单元、程序段或代码的一部分,所述单元、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能单元可以集成在一起形成一个独立的部分,也可以是各个单元单独存在,也可以两个或两个以上单元集成形成一个独立的部分。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1