CN113722035B - 弹框任务管理及弹框展示方法、装置、设备和存储介质 - Google Patents
弹框任务管理及弹框展示方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN113722035B CN113722035B CN202111015070.0A CN202111015070A CN113722035B CN 113722035 B CN113722035 B CN 113722035B CN 202111015070 A CN202111015070 A CN 202111015070A CN 113722035 B CN113722035 B CN 113722035B
- Authority
- CN
- China
- Prior art keywords
- task
- frame
- bullet
- pool
- management
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请提出一种弹框任务管理及弹框展示方法、装置、设备和存储介质,该方法包括:若监听到应用的冷启动事件,创建第一任务管理池及第一任务销毁池;将第一弹框任务加载至第一任务管理池中并对每个第一弹框任务设置优先级;按照第一弹框任务的优先级从高到低的顺序依次调用并执行第一任务管理池中的第一弹框任务,以依次展示对应的弹框;每展示一个弹框,将展示的弹框对应的第一弹框任务移至第一任务销毁池,以等待再次被调用。本申请通过创建任务管理池和任务销毁池使弹框展示任务与弹框的其他任务分别在不同任务池中被执行,实现多线程操作有效防止或减少线程阻塞,弹框先后弹出避免了多弹框同时展示的无序杂乱,提高了用户体验。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种弹框任务管理及弹框展示方法、装置、设备和存储介质。
背景技术
在互联网应用中,每个APP或应用都可能需要用户授权一些权限,例如定位、网络、隐私协议、推送通知等。在大多数情况下各种授权权限的弹框会不定时、无序的弹出,这样会导致用户在使用应用或APP尤其是刚启动APP的时候,首页或当前页会同时弹出许多弹框叠在一起杂乱无章。且由于同时弹出的弹框较多因此相应地同时需要占用较多线程资源和内存,导致应用程序或APP的启动缓慢,严重影响用户的体验感。
发明内容
为了解决现有技术中弹框无序叠加影响用户体验且占用线程多导致启动缓慢的技术问题。本申请提供了一种弹框任务管理及弹框展示方法、装置、设备和存储介质,其主要目的在于有序管理弹框,减少内存资源的无效占用。
为实现上述目的,本申请提供了一种弹框任务管理及弹框展示方法,该方法包括:
若监听到应用的冷启动事件,则创建第一任务管理池及对应的第一任务销毁池;
将生成的第一弹框任务加载至第一任务管理池中;
根据预设规则,对第一任务管理池中的每个第一弹框任务设置优先级;
按照第一弹框任务的优先级从高到低的顺序依次调用并执行第一任务管理池中的第一弹框任务,以依次展示对应的弹框;
每展示一个弹框,将展示的弹框对应的第一弹框任务移至第一任务销毁池,以等待再次被调用。
此外,为实现上述目的,本申请还提供了一种弹框任务管理及弹框展示装置,该装置包括:
任务池创建模块,用于若监听到应用的冷启动事件,则创建第一任务管理池及对应的第一任务销毁池;
第一任务加载模块,用于将生成的第一弹框任务加载至第一任务管理池中;
第一优先级设置模块,用于根据预设规则,对第一任务管理池中的每个第一弹框任务设置优先级;
第一弹框展示模块,用于按照第一弹框任务的优先级从高到低的顺序依次调用并执行第一任务管理池中的第一弹框任务,以依次展示对应的弹框;
第一任务移除模块,用于每展示一个弹框,将展示的弹框对应的第一弹框任务移至第一任务销毁池,以等待再次被调用。
为实现上述目的,本申请还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,处理器执行计算机可读指令时执行如前面任一项的弹框任务管理及弹框展示方法的步骤。
为实现上述目的,本申请还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行如前面任一项的弹框任务管理及弹框展示方法的步骤。
本申请提出的弹框任务管理及弹框展示方法、装置、设备和存储介质,通过创建任务管理池和任务销毁池使弹框展示任务与弹框的其他任务分别在不同任务池中被执行,实现多线程操作有效防止或减少线程阻塞,将展示的弹框对应的第一弹框任务从第一任务管理池中移除也减小下一个未执行的第一弹框任务的弹框展示的延时,缩短相邻弹框展示的间隔,弹框先后弹出避免了多弹框同时无序杂乱的展示,提高了用户体验。
附图说明
图1为本申请一实施例中弹框任务管理及弹框展示方法的应用场景图;
图2为本申请一实施例中弹框任务管理及弹框展示方法的流程示意图;
图3为本申请一实施例中弹框任务管理及弹框展示装置的结构框图;
图4为本申请一实施例中计算机设备的内部结构框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的弹框任务管理及弹框展示方法,可应用在如图1的应用环境中,其中,终端设备可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
图2为本申请一实施例中弹框任务管理及弹框展示方法的流程示意图。参考图2,以该方法应用在图1中的终端设备为例进行说明。该弹框任务管理及弹框展示方法包括以下步骤S100-S500:
S100:若监听到应用的冷启动事件,则创建第一任务管理池及对应的第一任务销毁池。
具体地,当启动应用时,后台没有该应用的进程,这时终端设备的系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。在应用冷启动时,通过初始化的方式创建第一任务管理池和第一任务销毁池。第一任务管理池和第一任务销毁池对应不同线程,第一任务销毁池中的任务是从第一任务管理池中获取的,第一任务管理池和第一任务销毁池执行的任务所产生的效果或目的不同。本申请的应用可以为应用程序、APP、小程序、web网页中的任意一种,且不局限于此。
S200:将生成的第一弹框任务加载至第一任务管理池中。
具体地,APP启动的时候需要经过编译期。当应用冷启动代码运行时会调用main函数作为程序的入口,在main函数之后,会通过UIKit框架绘画应用的页面,AppDelegate是APP主线程绘画UI的代理类,从AppDelegate加载到UI绘画完成期间,如果有第一弹框任务生成,则在Appdelegate的代理类中利用弹框管理器将在这期间生成的第一弹框任务加载至第一任务管理池中。
第一弹框任务包括系统弹框任务和应用的内容定制弹框任务,例如:定位授权弹框任务、网络授权弹框任务、隐私协议授权弹框任务、推送通知弹框任务等。弹框任务用于在被调用时展示相应的弹框并执行该弹框的响应事件对应的响应事件任务。
S300:根据预设规则,对第一任务管理池中的每个第一弹框任务设置优先级。
具体地,预设规则为预先制定的弹框优先级设置规则,具体根据实际约定。更具体地,可以根据弹框任务的类型和/或弹框任务生成的时间来设置优先级。每个弹框任务都对应有唯一的一个优先级。优先级越高的弹框任务越优先被执行。
第一任务管理池中第一弹框任务的优先级是以有序集合来进行管理的,对各个第一弹框任务设置优先级后会根据优先级对对应的第一弹框任务设置优先级标识,当有序集合中优先级顺序改变,会对对应的第一弹框任务的优先级标识进行相应修改。
更具体地,第一弹框任务以map(key-value)形式存储,key代表第一弹框任务的优先级,value为第一弹框任务的任务对象,任务对象用于定义弹框的拓展属性(例如弹框名称、ID、弹框的样式、文案、弹框的最长展示时长等其中的至少一种)、弹框的响应事件的回调。通过map形式存储更方便查询到将要弹出的弹框所对应的任务对象,实现快速响应。
S400:按照第一弹框任务的优先级从高到低的顺序依次调用并执行第一任务管理池中的第一弹框任务,以依次展示对应的弹框。
具体地,按照第一任务管理池中第一弹框任务的优先级从高到低的顺序依次调用并执行第一任务管理池中当前优先级最高且未执行的第一弹框任务,以展示当前优先级最高且未执行的第一弹框任务对应的弹框,如此循环直至执行完所有第一弹框任务并完成所有第一弹框任务所对应的弹框的展示。每个第一弹框任务标记有任务状态,任务状态包括已执行和未执行,根据任务状态可以判断哪些第一弹框任务未执行。
在调用第一弹框任务时可以通过key找到value对应的任务对象,从任务对象中提取出弹框的拓展属性,根据拓展属性绘制出对应的弹框并在可视化界面上展示。
S500:每展示一个弹框,将展示的弹框对应的第一弹框任务移至第一任务销毁池,以等待再次被调用。
具体地,弹框从开始展示到完成展示一般会占用一定时长,即弹框的展示具有生命期限。如果用户不响应弹框上的选择按钮,则弹框会一直展示直至到达生命期限,如果用户响应弹框上的选择按钮,则弹框会提前结束或完成展示。
第一弹框任务包括了弹框展示任务及对应的响应事件任务。在弹框开始展示时,代表线程已经从第一弹框任务的任务对象中提取出弹框的拓展属性并成功绘制出弹框,因此,弹框展示任务的调用已经完成,将第一弹框任务从第一任务管理池中移除不会影响该弹框的继续展示。
展示的弹框对应的第一弹框任务实际处于未完全执行的状态,如果不将展示的弹框对应的第一弹框任务从第一任务管理池中移除,则在该弹框展示期间,第一任务管理池的线程不会继续执行下一个未执行的第一弹框任务,而是一直等待弹框展示完成,在弹框展示完成后,线程还会继续执行该弹框对应的第一弹框任务的响应事件任务。在响应事件任务执行完成后,线程才会继续执行下一个未执行的第一弹框任务的弹框展示任务。而下一个弹框在展示前需要花费一定的渲染和绘制时间,这种操作会导致相邻两个弹框的展示间隔较长,而响应事件任务一般是在后台执行的,因而会导致在应用的可视化界面存在较长的空白交互,给用户带来一种需要较长等待时间的感官感受,降低了用户的使用体验。
因此,本实施例在弹框顺利展示时,将展示的弹框的第一弹框任务从第一任务管理池中移至第一任务销毁池,使得线程能够及时处理下一个弹框的展示任务。在第一任务销毁池的第一弹框任务会在合适的时机被再次调用,以执行对应的响应事件任务。
第一任务销毁池用于存放已执行完弹框展示任务的第一弹框任务。第一弹框任务除了用于弹框展示,还可能用于弹框展示后的响应事件,因此移至第一任务销毁池不代表对应的第一弹框任务可以立刻被销毁。这样在第一任务管理池中不会保留已展示的弹框的第一弹框任务,因此,在一定程度上可以更好管理未执行的第一弹框任务。
另外,如果第一弹框任务中有的第一弹框任务包括弹框展示任务和响应事件任务,有的第一弹框任务只包括弹框展示任务,则可以选择将有响应事件任务的第一弹框任务移至第一任务销毁池等待调用,将没有响应事件任务的第一弹框任务移至第三任务销毁池等待销毁。
本实施例将展示的弹框对应的第一弹框任务从第一任务管理池中移除是为了减小下一个未执行的第一弹框任务的弹框展示的延时,在根据先后顺序有序展示弹框、避免了多弹框同时展示的无序杂乱的同时,缩短相邻弹框展示的间隔,提高了用户体验。
在一个实施例中,步骤S400具体包括:
利用第一线程按照第一弹框任务的优先级依次调用并执行第一任务管理池中当前优先级最高且未被执行的第一弹框任务,以获取当前优先级最高且未被执行的第一弹框任务携带的弹框属性,并根据弹框属性生成并展示对应的弹框。
具体地,本实施例的第一线程可以为主线程也可以为子线程,优先地,第一线程为主线程。利用第一线程来实现弹框的生成和展示。
第一线程依次执行第一任务管理池中的每个第一弹框任务,从当前优先级最高且未被执行的第一弹框任务的任务对象中提取出弹框的拓展属性,以绘制并展示出具有相应渲染效果的弹框,进而依次生成并展示各个弹框。当然,在每个弹框的显示时长达到目标时长或在用户响应弹框按钮的情况下,隐藏弹框后才会展示新的弹框。
更具体地,若当前页面加载完成,则根据第一任务管理池中第一弹框任务的优先级确定当前优先级最高且未执行的第一弹框任务作为当前待执行第一弹框任务;利用主线程调用并执行当前待执行第一弹框任务,以获取当前待执行第一弹框任务携带的弹框属性,根据弹框属性生成并展示对应的当前弹框;若弹框展示则将该第一弹框任务从第一任务管理池中移除,根据第一任务管理池中第一弹框任务的优先级确定下一个优先级最高且未执行的第一弹框任务作为当前待执行第一弹框任务,执行利用主线程调用并执行当前待执行第一弹框任务,以获取当前待执行第一弹框任务携带的弹框属性,根据弹框属性生成并展示对应的当前弹框的步骤,直至第一任务管理池中所有第一弹框任务被执行并移除。
在一个实施例中,该方法还包括:
每监听到一个弹框的展示完成,利用第二线程调用第一任务销毁池中与展示完成的弹框对应的第一弹框任务,以执行展示完成的弹框的响应事件任务,其中,第二线程与第一线程为不同线程。
具体地,每个弹框不可能一直展示,如果弹框展示时长超过预定时长,或者用户在预设时长之前操作弹框使弹框提前完成展示,则弹框会自动隐藏。弹框展示完成后,第二线程会去第一任务销毁池中调用对应的第一弹框任务的任务对象中的block回调函数,以执行弹框对应的响应事件任务。block是任务对象中的一个回调函数,是在弹框弹出后,用户点击弹框后或弹框展示超时后执行的回调函数。响应事件任务由第二线程完成,由于用户点击或操作弹框按钮是需要等待时间,因此,利用第二线程来完成响应事件任务,可以不耽误第一线程来执行各个第一弹框的弹框展示任务。
更具体地,第二线程为主线程或子线程,且第二线程与第一线程为不同的线程。第二线程在第一任务销毁池中调用已执行的第一弹框任务去执行对应的响应事件任务,相当于将第一弹框任务对应的弹框展示和响应事件分开在不同的队列中排队执行,实现了弹框展示任务和响应事件任务的并行执行。
本实施例将弹框展示和响应事件的执行分别由第一线程和第二线程分别单独来完成,可以有效防止或减少线程阻塞、提高用户体验。
在一个实施例中,该方法还包括:
若监听到应用对应的应用进程被释放,则在预设时长后销毁第一任务管理池和第一任务销毁池。
具体地,第一任务管理池和第一任务销毁池都会占用一定的内存和线程资源,因此,在应用的应用进程被释放掉后预设时长后销毁对应的任务管理池和任务销毁池,可以减少内存和线程占用。
在一个实施例中,该方法还包括:若第一任务管理池中的第一弹框任务全部移至第一任务销毁池,则销毁第一任务管理池。
具体地,第一任务管理池会占用一定的内存和线程资源,因此,在其中的第一弹框任务的弹框展示后并都移至第一任务销毁池后,销毁第一任务管理池可以释放一定的内存和线程,减少内存和线程占用。
在一个实施例中,该方法还包括:若第一任务销毁池中的第一弹框任务所对应的所有响应事件任务执行完成,则销毁第一任务销毁池。
具体地,第一任务销毁池会占用一定的内存和线程资源,因此,在其执行完其中的第一弹框任务后销毁第一任务销毁池可以释放一定的内存和线程,减少内存和线程占用。
在一个实施例中,步骤S100具体包括:
若监听到应用的冷启动事件,则创建弹框任务的弹框管理类;
若生成第一弹框任务,则根据弹框管理类初始化一个第一任务管理池及对应的第一任务销毁池。
具体地,在应用冷启动时,通过初始化的方式新建弹框管理类。弹框管理类是对各个弹框任务对应的弹框进行有序展示的工具类。
弹框管理类是一种全局的类,其生命周期与应用的运行周期同步,即,随着应用开始运行到退出后台停止运行、运行所占用的进程资源被释放而结束。弹框管理类用于对弹框任务进行任务管理、任务销毁、弹框展示管理。
弹框管理类创建后在有弹框任务生成的时候才生成第一任务管理池和第一任务销毁池,在没有弹框任务生成的时候可以暂时不需要创建任务管理池和任务销毁池。可以有效减少对内存和线程资源的占用。
在一个实施例中,该方法还包括:
若在冷启动事件之后监听到应用的热启动事件,则获取在冷启动事件时创建的弹框管理类;
若生成第二弹框任务,则将第二弹框任务加载至弹框管理类对应的第二任务管理池中,
其中,第二任务管理池为在冷启动事件之后临时退出当前页面时未被销毁的第一任务管理池,或,在不存在第一任务管理池时根据弹框管理类初始化的一个新的任务管理池;
根据预设规则,对第二任务管理池中未执行的第一弹框任务和第二弹框任务设置优先级;
按照第二弹框任务的优先级依次调用并执行第二任务管理池中的第一弹框任务或第二弹框任务,以依次展示对应的弹框;
每展示一个弹框,将展示的弹框对应的第一弹框任务或第二弹框任务移至第二任务管理池对应的第二任务销毁池,以等待再次被调用。
具体地,当启动应用时,后台已有该应用的进程(例:按home键回到桌面,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,从已有的进程中来启动应用,这个方式叫热启动。
在热启动应用时,该应用的进程还是该应用冷启动时创建的,弹框管理类也是冷启动时创建的,相当于热启动时继续沿用冷启动时创造的弹框管理类,不会再重新创建,因为弹框管理类是一种全局的类。
如果在第一任务管理池中的第一弹框任务没有全部执行完或没有全部移至第一任务销毁池应用被暂时退到后台运行,则第一任务管理池仍然会保留。下次热启动时,如果有新的第二弹框任务,则会在当前页面加载时被加载至该第一任务管理池中。加入的第二弹框任务也会被设置优先级。当然,由于第二弹框任务都是晚于第一弹框任务生成的,因此,可以将第二弹框任务的优先级设置为低于第一弹框任务。如果有多个第二弹框任务,则按照预设规则,在第二弹框任务之间进行优先级排序。另外,也可以在第二弹框任务加入第一任务管理池后,对第一任务管理池中的所有第一弹框任务和第二弹框任务重新进行优先级设置。
如果在应用被暂时退到后台运行时,第一任务管理池中的第一弹框任务全部执行完且移至第一任务销毁池,且,第一任务管理池被销毁,则在热启动时会创建一个新的任务管理池作为第二任务管理池,同时还会创建对应的第二任务销毁池。在当前页面加载时加入至第二任务管理池中的都是第二弹框任务,且会对第二弹框任务设置优先级。另外,如果应用被暂时退到后台运行,第一任务管理池被销毁,如果第一任务销毁池中还有第一弹框任务,第一任务销毁池中的第一弹框任务会在后台继续被执行,直至执行完第一弹框任务后被销毁。
不论是继续沿用第一任务管理池还是使用新建的任务管理池,线程都会根据优先级依次调用任务管理池中的弹框任务以展示对应的弹框,并将展示的弹框所对应的第一弹框任务或第二弹框任务移至对应的任务销毁池,等待执行对应的响应事件任务。具体步骤参见上述第一任务管理池和第一任务销毁池中弹框展示任务和响应事件任务的执行过程,此处不再赘述。
第二任务销毁池与第二任务管理池对应。若第二任务管理池为第一任务管理池,则第二任务销毁池为在冷启动事件之后临时退出当前页面时未被销毁的第一任务销毁池。若第二任务管理池为新建的任务管理池,则第二任务销毁池为在不存在第一任务销毁池时根据弹框管理类初始化的一个新的任务销毁池。
本申请通过一个弹框管理类管理应用从冷启动到退出后台整个运行周期过程中的弹框的展示,在有弹框任务时创建任务管理池,在没有弹框任务时销毁任务管理池,有效的利用内存资源,减少内存资源的无效占用,应用程序或APP启动或者进入到某个页面,如果有多个弹框需要弹出时,会根据弹框的优先级依次弹出,避免了同一时间多个弹框依次弹出而导致的极差的用户体验。
在一个实施例中,该方法还包括:若有新的第一弹框任务生成并加载至第一任务管理池,则根据预设规则,对第一任务管理池中所有未执行的第一弹框任务重新设置优先级。
具体地,第一任务管理池中的第一弹框任务被执行过程中,在进入不同的页面时可能会触发生成新的第一弹框任务。新的第一弹框任务被添加后,会重新对所有未执行的第一弹框任务进行优先级重排序。根据重新排序后的优先级继续执行未执行的第一弹框任务。
同理,第二任务管理池被加载新的第二弹框任务后,也会根据预设规则,对第二任务管理池中所有未执行的弹框任务重新设置优先级。
当然,也可以将新加载的弹框任务的优先级全部设在已有未执行的弹框任务的优先级之后,新加载的弹框任务之间的优先级根据预设规则设置。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图3为本申请一实施例中弹框任务管理及弹框展示装置的结构框图。参考图3,该弹框任务管理及弹框展示装置包括:
任务池创建模块100,用于若监听到应用的冷启动事件,则创建第一任务管理池及对应的第一任务销毁池;
第一任务加载模块200,用于将生成的第一弹框任务加载至第一任务管理池中;
第一优先级设置模块300,用于根据预设规则,对第一任务管理池中的每个第一弹框任务设置优先级;
第一弹框展示模块400,用于按照第一弹框任务的优先级从高到低的顺序依次调用并执行第一任务管理池中的第一弹框任务,以依次展示对应的弹框;
第一任务移除模块500,用于每展示一个弹框,将展示的弹框对应的第一弹框任务移至第一任务销毁池,以等待再次被调用。
弹框任务管理及弹框展示装置一般设置于终端设备中。
在一个实施例中,第一弹框展示模块400具体用于:
利用第一线程按照第一弹框任务的优先级依次调用并执行第一任务管理池中当前优先级最高且未被执行的第一弹框任务,以获取当前优先级最高且未被执行的第一弹框任务携带的弹框属性,并根据弹框属性生成并展示对应的弹框。
在一个实施例中,该装置还包括:
响应模块,用于每监听到一个弹框的展示完成,利用第二线程调用第一任务销毁池中与展示完成的弹框对应的第一弹框任务,以执行展示完成的弹框的响应事件任务,其中,第二线程与第一线程为不同线程。
在一个实施例中,该装置还包括:
销毁模块,用于若监听到应用对应的应用进程被释放,则在预设时长后销毁第一任务管理池和第一任务销毁池。
在一个实施例中,任务池创建模块100具体包括:
弹框管理类创建单元,用于若监听到应用的冷启动事件,则创建弹框任务的弹框管理类;
任务池创建单元,用于若生成第一弹框任务,则根据弹框管理类初始化一个第一任务管理池及对应的第一任务销毁池。
在一个实施例中,该装置还包括:
弹框管理类获取模块,用于若在冷启动事件之后监听到应用的热启动事件,则获取在冷启动事件时创建的弹框管理类;
第二任务加载模块,用于若生成第二弹框任务,则将第二弹框任务加载至弹框管理类对应的第二任务管理池中,
其中,第二任务管理池为在冷启动事件之后临时退出当前页面时未被销毁的第一任务管理池,或,在不存在第一任务管理池时根据弹框管理类初始化的一个新的任务管理池;
第二优先级设置模块,用于根据预设规则,对第二任务管理池中未执行的第一弹框任务和第二弹框任务设置优先级;
第二弹框展示模块,用于按照第二弹框任务的优先级依次调用并执行第二任务管理池中的第一弹框任务或第二弹框任务,以依次展示对应的弹框;
第二任务移除模块,用于每展示一个弹框,将展示的弹框对应的第一弹框任务或第二弹框任务移至第二任务管理池对应的第二任务销毁池,以等待再次被调用。
在一个实施例中,该装置还包括:
优先级重置模块,用于若有新的第一弹框任务生成并加载至第一任务管理池,则根据预设规则,对第一任务管理池中所有未执行的第一弹框任务重新设置优先级。
其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
关于弹框任务管理及弹框展示装置的具体限定可以参见上文中对于弹框任务管理及弹框展示方法的限定,在此不再赘述。上述弹框任务管理及弹框展示装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图4为本申请一实施例中计算机设备的内部结构框图。该计算机设备具体可以是图1中的终端设备。如图4所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,该计算机设备的处理器用于提供计算和控制能力。存储器包括存储介质和内存储器。存储介质可以是非易失性存储介质,也可以是易失性存储介质。存储介质存储有操作系统,还可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器实现弹框任务管理及弹框展示方法。该内存储器为存储介质中的操作系统和计算机可读指令的运行提供环境。该内存储器中也可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行弹框任务管理及弹框展示方法。该计算机设备的网络接口用于与外部服务器通过网络连接通信。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令(例如计算机程序),处理器执行计算机可读指令时实现上述实施例中弹框任务管理及弹框展示方法的步骤,例如图2所示的步骤S100至步骤S500及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机可读指令时实现上述实施例中弹框任务管理及弹框展示装置的各模块/单元的功能,例如图3所示模块100至模块500的功能。为避免重复,这里不再赘述。
处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机可读指令和/或模块,处理器通过运行或执行存储在存储器内的计算机可读指令和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。
存储器可以集成在处理器中,也可以与处理器分开设置。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令被处理器执行时实现上述实施例中弹框任务管理及弹框展示方法的步骤,例如图2所示的步骤S100至步骤S500及该方法的其它扩展和相关步骤的延伸。或者,计算机可读指令被处理器执行时实现上述实施例中弹框任务管理及弹框展示装置的各模块/单元的功能,例如图3所示模块100至模块500的功能。为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指示相关的硬件来完成,所述的计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (8)
1.一种弹框任务管理及弹框展示方法,其特征在于,所述方法包括:
若监听到应用的冷启动事件,则创建弹框任务的弹框管理类;
若生成第一弹框任务,则根据所述弹框管理类初始化一个第一任务管理池及对应的第一任务销毁池;
将生成的第一弹框任务加载至所述第一任务管理池中;
根据预设规则,对所述第一任务管理池中的每个所述第一弹框任务设置优先级;
按照所述第一弹框任务的优先级从高到低的顺序依次调用并执行所述第一任务管理池中的第一弹框任务,以依次展示对应的弹框;
每展示一个弹框,将展示的弹框对应的第一弹框任务移至所述第一任务销毁池,以等待再次被调用;
若在所述冷启动事件之后监听到所述应用的热启动事件,则获取在所述冷启动事件时创建的所述弹框管理类;
若生成第二弹框任务,则将所述第二弹框任务加载至所述弹框管理类对应的第二任务管理池中,
其中,所述第二任务管理池为在所述冷启动事件之后临时退出当前页面时未被销毁的所述第一任务管理池,或,在不存在所述第一任务管理池时根据所述弹框管理类初始化的一个新的任务管理池;
根据所述预设规则,对所述第二任务管理池中未执行的第一弹框任务和所述第二弹框任务设置优先级;
按照所述第二弹框任务的优先级依次调用并执行所述第二任务管理池中的第一弹框任务或第二弹框任务,以依次展示对应的弹框;
每展示一个弹框,将展示的弹框对应的第一弹框任务或第二弹框任务移至所述第二任务管理池对应的第二任务销毁池,以等待再次被调用。
2.根据权利要求1所述的方法,其特征在于,所述按照所述第一弹框任务的优先级从高到低的顺序依次调用并执行所述第一任务管理池中的第一弹框任务,以依次展示对应的弹框,包括:
利用第一线程按照所述第一弹框任务的优先级依次调用并执行所述第一任务管理池中当前优先级最高且未被执行的第一弹框任务,以获取当前优先级最高且未被执行的第一弹框任务携带的弹框属性,并根据所述弹框属性生成并展示对应的弹框。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
每监听到一个弹框的展示完成,利用第二线程调用所述第一任务销毁池中与所述展示完成的弹框对应的第一弹框任务,以执行所述展示完成的弹框的响应事件任务,其中,所述第二线程与所述第一线程为不同线程。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若监听到所述应用对应的应用进程被释放,则在预设时长后销毁所述第一任务管理池和第一任务销毁池。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:若有新的第一弹框任务生成并加载至所述第一任务管理池,则根据所述预设规则,对所述第一任务管理池中所有未执行的第一弹框任务重新设置优先级。
6.一种弹框任务管理及弹框展示装置,其特征在于,所述装置包括:
弹框管理类创建单元,用于若监听到应用的冷启动事件,则创建弹框任务的弹框管理类;
任务池创建单元,用于若生成第一弹框任务,则根据所述弹框管理类初始化一个第一任务管理池及对应的第一任务销毁池;
第一任务加载模块,用于将生成的第一弹框任务加载至所述第一任务管理池中;
第一优先级设置模块,用于根据预设规则,对所述第一任务管理池中的每个所述第一弹框任务设置优先级;
第一弹框展示模块,用于按照所述第一弹框任务的优先级从高到低的顺序依次调用并执行所述第一任务管理池中的第一弹框任务,以依次展示对应的弹框;
第一任务移除模块,用于每展示一个弹框,将展示的弹框对应的第一弹框任务移至所述第一任务销毁池,以等待再次被调用;
弹框管理类获取模块,用于若在所述冷启动事件之后监听到所述应用的热启动事件,则获取在所述冷启动事件时创建的所述弹框管理类;
第二任务加载模块,用于若生成第二弹框任务,则将所述第二弹框任务加载至所述弹框管理类对应的第二任务管理池中,
其中,所述第二任务管理池为在所述冷启动事件之后临时退出当前页面时未被销毁的所述第一任务管理池,或,在不存在所述第一任务管理池时根据所述弹框管理类初始化的一个新的任务管理池;
第二优先级设置模块,用于根据所述预设规则,对所述第二任务管理池中未执行的第一弹框任务和所述第二弹框任务设置优先级;
第二弹框展示模块,用于按照所述第二弹框任务的优先级依次调用并执行所述第二任务管理池中的第一弹框任务或第二弹框任务,以依次展示对应的弹框;
第二任务移除模块,用于每展示一个弹框,将展示的弹框对应的第一弹框任务或第二弹框任务移至所述第二任务管理池对应的第二任务销毁池,以等待再次被调用。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时执行如权利要求1-5任一项所述的弹框任务管理及弹框展示方法的步骤。
8.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时,使得所述处理器执行如权利要求1-5任一项所述的弹框任务管理及弹框展示方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111015070.0A CN113722035B (zh) | 2021-08-31 | 2021-08-31 | 弹框任务管理及弹框展示方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111015070.0A CN113722035B (zh) | 2021-08-31 | 2021-08-31 | 弹框任务管理及弹框展示方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113722035A CN113722035A (zh) | 2021-11-30 |
CN113722035B true CN113722035B (zh) | 2023-08-22 |
Family
ID=78680102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111015070.0A Active CN113722035B (zh) | 2021-08-31 | 2021-08-31 | 弹框任务管理及弹框展示方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113722035B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114217710B (zh) * | 2021-12-20 | 2023-07-21 | 平安付科技服务有限公司 | 弹框控制方法、装置、存储介质及系统 |
CN114968459A (zh) * | 2022-05-27 | 2022-08-30 | 重庆长安汽车股份有限公司 | 基于汽车ai智慧助手的事件处理方法 |
CN115097971B (zh) * | 2022-08-24 | 2023-02-14 | 中国中金财富证券有限公司 | 一种弹框的显示控制方法及相关装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017157186A1 (zh) * | 2016-03-16 | 2017-09-21 | 阿里巴巴集团控股有限公司 | 基于Android的弹框提示方法及装置 |
CN108664308A (zh) * | 2018-05-15 | 2018-10-16 | 北京五八信息技术有限公司 | 一种弹窗任务的管理方法、装置、存储介质及终端 |
CN108829487A (zh) * | 2018-06-28 | 2018-11-16 | 北京五八信息技术有限公司 | 一种弹窗的展示方法、装置、存储介质及终端 |
CN109634609A (zh) * | 2018-12-21 | 2019-04-16 | 江苏满运软件科技有限公司 | 动态弹窗的显示方法、系统、设备及存储介质 |
CN110688189A (zh) * | 2019-09-30 | 2020-01-14 | 北京拉勾网络技术有限公司 | 一种弹框的显示方法、装置及存储介质 |
CN111045796A (zh) * | 2019-10-23 | 2020-04-21 | 贝壳技术有限公司 | 应用程序弹窗的管理方法、装置及可读存储介质 |
CN111597008A (zh) * | 2020-05-22 | 2020-08-28 | 广州酷狗计算机科技有限公司 | 弹窗管理方法、装置、终端及存储介质 |
CN111949347A (zh) * | 2020-07-06 | 2020-11-17 | 北京奇保信安科技有限公司 | 弹窗信息展示方法、装置及电子设备 |
-
2021
- 2021-08-31 CN CN202111015070.0A patent/CN113722035B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017157186A1 (zh) * | 2016-03-16 | 2017-09-21 | 阿里巴巴集团控股有限公司 | 基于Android的弹框提示方法及装置 |
CN108664308A (zh) * | 2018-05-15 | 2018-10-16 | 北京五八信息技术有限公司 | 一种弹窗任务的管理方法、装置、存储介质及终端 |
CN108829487A (zh) * | 2018-06-28 | 2018-11-16 | 北京五八信息技术有限公司 | 一种弹窗的展示方法、装置、存储介质及终端 |
CN109634609A (zh) * | 2018-12-21 | 2019-04-16 | 江苏满运软件科技有限公司 | 动态弹窗的显示方法、系统、设备及存储介质 |
CN110688189A (zh) * | 2019-09-30 | 2020-01-14 | 北京拉勾网络技术有限公司 | 一种弹框的显示方法、装置及存储介质 |
CN111045796A (zh) * | 2019-10-23 | 2020-04-21 | 贝壳技术有限公司 | 应用程序弹窗的管理方法、装置及可读存储介质 |
CN111597008A (zh) * | 2020-05-22 | 2020-08-28 | 广州酷狗计算机科技有限公司 | 弹窗管理方法、装置、终端及存储介质 |
CN111949347A (zh) * | 2020-07-06 | 2020-11-17 | 北京奇保信安科技有限公司 | 弹窗信息展示方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113722035A (zh) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113722035B (zh) | 弹框任务管理及弹框展示方法、装置、设备和存储介质 | |
CN112882804A (zh) | 一种启动应用的方法及装置 | |
CN115097971B (zh) | 一种弹框的显示控制方法及相关装置 | |
CN110765288B (zh) | 一种图像信息同步方法、装置、系统及存储介质 | |
TW201826109A (zh) | 頁面展示方法及裝置 | |
CN110990132B (zh) | 异步任务处理方法、装置、计算机设备和存储介质 | |
US11069019B2 (en) | Multi-threaded asynchronous frame processing | |
CN110096329B (zh) | 一种显示内容控制方法、电子装置及计算机可读存储介质 | |
CN111444117B (zh) | 存储空间碎片化实现方法、装置、存储介质及电子设备 | |
CN111831432B (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN113835835A (zh) | 一种创建一致性组的方法、装置、及计算机可读存储介质 | |
JP6528400B2 (ja) | 情報処理装置、情報処理システム、情報処理装置の制御方法、およびプログラム | |
CN108228299B (zh) | 显示方法及电子设备 | |
CN113806197A (zh) | 一种页面加载时长计算方法方法及装置 | |
CN111258676A (zh) | 模块预加载方法、装置、设备及可读存储介质 | |
CN113330412A (zh) | 一种笔记重绘方法、书写设备和存储介质 | |
US11704478B2 (en) | Page processing method and device, and electronic device | |
CN111382351B (zh) | 软电话资源共享方法、电子装置及计算机可读存储介质 | |
WO2021073549A1 (zh) | 转屏画面显示方法、装置、计算机设备和存储介质 | |
CN110891120B (zh) | 界面内容展示方法、装置及存储介质 | |
CN114356188B (zh) | 一种实现页面元素拖拽的方法及计算机设备 | |
CN117493004A (zh) | 线程控制方法、装置、电子设备及存储介质 | |
CN115438284A (zh) | 页面防抖方法、装置、计算机设备以及存储介质 | |
CN116541151A (zh) | 线程调度方法、装置、电子设备及介质 | |
CN116382876A (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 |