基于Android的弹框提示方法及装置与流程

文档序号:11276010阅读:193来源:国知局
基于Android的弹框提示方法及装置与流程

本申请涉及通信领域,尤其涉及一种基于android的弹框提示方法及装置。



背景技术:

在android系统中,对于一些需要向用户输出弹框的事件,通过可以由系统向用户输出填充了提示文案的弹框来提示用户。例如,该事件可以是单点登录事件。所谓单点登陆,通常是指只允许用户在一台设备上登陆其账号,一旦用户在其它设备上使用相同的登录账号登陆,需要把用户从当前的设备上踢出登陆态。当系统检测到了单点登录事件时,可以向用户输出弹框提示用户当前登录账号已在其它设备上登录,此时该弹框中的提示文案可以包括用户被踢出登录的原因。然而,在相关技术中,android系统在向用户输出弹框时,输出的弹框可能会被其它弹框或者其它页面所覆盖,从而影响用户对系统终端的app或者基本功能的使用。



技术实现要素:

本申请提出一种基于android的弹框提示方法,该方法包括:

在监听到弹框提示的触发事件时,启动activity弹框组件输出提示框;其中,该activity弹框组件的启动模式被预配置为单任务模式;

判断该activity弹框组件是否被其它activity组件覆盖;

当该activity弹框组件被其它activity组件覆盖时,重新启动该activity弹框组件,以触发将该activity弹框组件移至activity堆栈顶部使得所述提 示框在系统前台显示。

可选的,所述判断该activity弹框组件是否被其它activity组件覆盖包括:

判断所述activity弹框组件的onpause或者onstop方法是否被调用;

当所述activity弹框组件的onpause或者onstop方法被调用时,确定该activity弹框组件被其它activity组件覆盖。

可选的,所述当该activity弹框组件被其它activity组件覆盖时,重新启动该activity弹框组件包括:

当所述activity弹框组件的onpause方法被调用,基于所述onpause方法重新启动该activity弹框组件;

当所述activity弹框组件的onstop方法被调用时,判断所述activity弹框组件的onpause方法是否已被调用,如果所述onpause方法未被调用,则基于所述onstop方法重新启动该activity弹框组件。

可选的,所述基于所述onpause方法或者所述onstop方法重新启动该activity弹框组件包括:

判断所述onpause方法或者所述onstop方法的调用是否是由针对所述activity弹框组件的关闭事件所触发;

如果所述onpause方法或者所述onstop方法的调用不是由针对所述activity弹框组件的关闭事件所触发,则基于所述onpause方法或者所述onstop方法重新启动该activity弹框组件。

可选的,所述方法还包括:

如果所述onpause方法或者所述onstop方法的调用是由针对所述activity弹框组件的关闭事件所触发,则针对所述activity弹框组件执行正常关闭。

本申请还提出一种基于android的弹框提示装置,该装置包括:

启动模块,用于在监听到弹框提示的触发事件时,启动activity弹框组件输出提示框;其中,该activity弹框组件的启动模式被预配置为单任务模 式;

判断模块,用于判断该activity弹框组件是否被其它activity组件覆盖;

重启模块,用于在该activity弹框组件被其它activity组件覆盖时,重新启动该activity弹框组件,以触发将该activity弹框组件移至activity堆栈顶部使得所述提示框在系统前台显示。

可选的,所述判断模块具体用于:

判断所述activity弹框组件的onpause或者onstop方法是否被调用;

当所述activity弹框组件的onpause或者onstop方法被调用时,确定该activity弹框组件被其它activity组件覆盖。

可选的,所述重启模块具体用于:

当所述activity弹框组件的onpause方法被调用,基于所述onpause方法重新启动该activity弹框组件;

当所述activity弹框组件的onstop方法被调用时,判断所述activity弹框组件的onpause方法是否已被调用,如果所述onpause方法未被调用,则基于所述onstop方法重新启动该activity弹框组件。

可选的,所述重启模块进一步用于:

判断所述onpause方法或者所述onstop方法的调用是否是由针对所述activity弹框组件的关闭事件所触发;

如果所述onpause方法或者所述onstop方法的调用不是由针对所述activity弹框组件的关闭事件所触发,则基于所述onpause方法或者所述onstop方法重新启动该activity弹框组件。

可选的,所述装置还包括:

关闭模块,用于在所述onpause方法或者所述onstop方法的调用是由针对所述activity弹框组件的关闭事件所触发时,针对所述activity弹框组件执行正常关闭。

本申请中,通过在监听到弹框提示的触发事件时,启动activity弹框组件输出提示框;其中,该activity弹框组件的启动模式被预配置为单任务模 式;判断该activity弹框组件是否被其它activity组件覆盖;当该activity弹框组件被其它activity组件覆盖时,重新启动该activity弹框组件,以触发将该activity弹框组件移至activity堆栈顶部使得所述提示框在系统前台显示,实现了当启动activity弹框组件向用户输出了提示框后,可以确保该提示框不被覆盖,始终在系统前台显示。

附图说明

图1是本申请一实施例提供的一种基于android的弹框提示方法的流程图;

图2是本申请一实施例提供的一种基于android的弹框提示装置的逻辑框图;

图3是本申请一实施例提供的承载所述一种基于android的弹框提示装置的终端的硬件结构图。

具体实施方式

在相关技术中,android系统在向用户输出弹框时,通常可以通过如下方式实现:

在示出的一种实现方式中,android系统可以利用android系统中的window组件来进行弹框。

通过window组件来弹框,可以实现在任意页面弹框,且不被其他页面覆盖,然而通过window组件来弹框,通常支持用户对弹框进行设置,因此当用户通过手动设置在系统中将弹框禁掉,则会导致系统无法进行弹框。

在示出的另一种实现方式中,android系统可以利用activity组件来进行弹框。

在android系统中,activity组件是一个负责与用户进行交互的组件,该组件可以提供一个交互界面,并在交互界面上显示一些交互控件(比如按钮、弹窗等),用户可以通过操作这些交互控件与终端进行交互,终端在后台可 以监听用户针对这些交互控件的事件,来完成与本次交互对应的任务。终端通过activity组件来弹框,可以实现将系统中任意的activity组件作为弹框的主体,在任意页面中来进行弹框。然而,由于activity组件通常是以activity堆栈的形态进行管理的,一旦该activity组件在activity堆栈中被其它activity组件所覆盖,即该其它activity组件占据activity堆栈顶部,而该activity组件不再处于activity堆栈的顶部时,该activity组件输出的弹框将会被其它弹框或者界面覆盖,因而无法在系统前台进行显示,对系统的app或者基本功能的使用造成影响。

在示出的另一种实现方式中,android系统可以在一个固定的页面进行弹框。

然而在一个固定的页面进行弹框,无法实现实现在任意界面进行弹框的目的,因此不够灵活,而且交互体验不好。例如,以在登录页面进行弹框为例,输出的弹框智能在登录页面进行显示,系统向用户输出弹框后,如果系统前台显示的为其它页面,那么只有用户在主动进行页面切换,回到登录页面才能够查看到系统输出的弹框,从而会导致系统输出的弹框无法及时的通知到用户。

有鉴于此,本申请提出一种基于android的弹框提示方法,通过在监听到弹框提示的触发事件时,启动activity弹框组件输出提示框;其中,该activity弹框组件的启动模式被预配置为单任务模式;判断该activity弹框组件是否被其它activity组件覆盖;当该activity弹框组件被其它activity组件覆盖时,重新启动该activity弹框组件,以触发将该activity弹框组件移至activity堆栈顶部使得所述提示框在系统前台显示;由于在本申请中,activity弹框组件为单任务模式,因此当该activity弹框组件被重新启动后,可以立即被移至activity堆栈顶部,从而在启动activity弹框组件向用户输出了提示框后,可以确保该提示框不被覆盖,始终在系统前台显示。

同时,由于本申请不再基于android系统中的window组件进行弹框,不再支持用户对弹框进行设置,因此可以避免由于用户通过手动设置在系统中将弹框禁掉导致无法进行弹框的问题。

另外,由于本申请通过activity弹框组件进行弹框,因此可以实现将系统中任意的activity组件作为主体,在任意页面中来进行弹框,从而具有很高的灵活性。

下面通过具体实施例并结合具体的应用场景对本申请进行描述。

请参考图1,图1是本申请一实施例提供的一种基于android的弹框提示方法,应用于终端,所述方法执行以下步骤:

步骤101,在监听到弹框提示的触发事件时,启动activity弹框组件输出提示框;其中,该activity弹框组件的启动模式被预配置为单任务模式;

在本例中,上述终端可以包括搭载android系统的智能终端;例如,智能手机、平板电脑等移动终端等。

上述弹框提示的触发事件可以包括终端系统监听到的需要面向用户输出弹框提示的事件。其中,在不同的应用场景中,上述弹框提示的触发事件可以分别包括不同类型的事件。

例如,在单点登录的应用场景中,上述弹框提示的触发事件可以包括单点登录事件。在该应用场景中,当用户使用相同登录账号在其它终端上登录时,当前终端可以退出登录状态,并面向用户输出一个提示框提示本次退出登录状态的原因。

又如,在呼叫来电接听的应用场景中,上述弹框提示的触发事件可以包括呼叫来电事件。当终端的系统监听到呼叫来电时,可以向用户输出一个提示框提示用户接收到了来电,用户此时可以针对该提示框进行相应的操作(比如向上滑动或者向下滑动)来接听来电或者挂断来电。

在本例中,终端在向用户进行弹框时,仍然可以利用预设的activity弹框组件来实现。当终端监听到弹框提示的触发事件后,可以启动activity弹框组件,创建一个用于输出提示框的activity实例,然后基于该实例将提示文案填充到提示框中向用户输出。

在android系统中,activity组件的启动模式(launchmode)通常包standard模式,singletop模式,singletask模式(即单任务模式)以及 singleinstance模式等四种模式。

其中,当activity组件的启动模式为singletask模式时,该activity弹框组件将只允许唯一的activity实例运行。

在singletask模式下,该activity弹框组件被启动后,系统会判断activity堆栈中是否已经存在与该activity弹框组件对应的activity实例,由于当前activity堆栈中已经存在与该activity弹框组件对应的activity实例,因此在singletask模式下系统将不会再新建activity实例,会将想要覆盖该activity弹框组件的其它activity组件弹出activity堆栈,并将已经存在的该activity示例所对应的activity弹框组件重新移至activity堆栈的顶部。在这种情况下,基于该activity实例输出的提示框将会重新在系统前台显示而不被覆盖。

基于此,在本例中,为了使activity弹框组件输出的提示框不被其它提示框或者页面所覆盖,可以在初始状态下,将该activity弹框组件的启动模式设置为singletask模式。

步骤102,判断该activity弹框组件是否被其它activity组件覆盖;

在android系统中,activity组件的生命周期中通常包括running状态(运行状态)、pause状态(暂停状态)、stop状态(停止状态)以及destroy状态(关闭)。

其中,running状态,是指activity组件处于可见并且可以和用户进行交互的状态。当activity组件启动后,初始状态会处于running状态,此时会被放入在activity堆栈的顶部,在系统前台(屏幕最前端)显示。

pause状态,是指activity组件被其它的非全屏或者半透明的activity组件所覆盖,不再处于activity堆栈顶部,但仍然处于可见并且可以和用户进行交互的状态。

stop状态,是指activity组件被其它的activity组件完全覆盖,不再处于activity堆栈顶部,该activity组件的交互界面被完全被隐藏的状态。

destroy状态,只指activity组件被关闭销毁的状态。

其中,以上四种运行状态可以通过用户针对该activity组件的操作来进 行转换。

在android系统中,当activity组件启动后,如果用户通过操作启动了新的activity组件,那么该新的activity组件会被移入activity堆栈顶部,对原有的该activity组件进行覆盖,此时系统会调用onpause方法将原有的activity组件转换为pause状态。

当该原有的activity组件被完全覆盖后,此时系统会调用onstop方法将该原有的activity组件转换为stop状态。

其中,当该原有的activity组件处于pause状态或者stop状态时,系统会在系统内存不足的时候,通过调用ondestroy方法将该activity组件转换为destroy状态对该activity组件执行关闭。

基于此,在示出的一种实施方式中,系统在判断该activity弹框组件是否被其它activity组件覆盖时,可以通过判断该activity弹框组件的onpause或者onstop方法是否被调用来实现。

当该activity弹框组件的onpause或者onstop方法被调用时,则可以确定当前该activity弹框组件被其它activity组件覆盖,不再处于堆栈顶部。

步骤103,当该activity弹框组件被其它activity组件覆盖时,重新启动该activity弹框组件,以触发将该activity弹框组件移至activity堆栈顶部使得所述提示框在系统前台显示。

在本例中,当系统判断出该activity弹框组件被其它activity组件覆盖时,可以重新启动该activity弹框组件。由于该activity弹框组件已经被预配置为singletask模式,因此当该activity弹框组件被重新启动后,系统会将想要覆盖该activity弹框组件的其它activity组件弹出activity堆栈,此时该activity弹框组件将会被重新移至activity堆栈顶部,在这种情况下,基于该activity弹框组件唯一activity实例输出的提示框将会重新在系统前台显示而不被覆盖。

在示出的一种实施方式中,如果系统判断出该activity弹框组件的onpause方法被调用,此时系统可以确认该activity弹框组件被其它activity 组件覆盖。

在这种情况下,可以在onpause方法中预先加载针对activity弹框组件的重启逻辑;比如,开发人员可以在onpause()方法中编辑用于针对activity弹框组件执行重启的执行代码。当系统调用该onpause方法后,则可以重新启动该activity弹框组件。

在示出的另一种实施方式中,如果系统判断出该activity弹框组件的onstop方法被调用,此时系统可以确认该activity弹框组件被其它activity组件覆盖。其中,该onstop方法也可以预先加载针对activity弹框组件的重启逻辑。

在android系统中,系统在针对onpause方法和onstop方法进行调用时,通常是先调用onpause方法再调用onstop方法(该调用顺序为android系统的基本处理机制);然而,在一些应用场景中,比如,并发弹框的场景(即当该activity弹框组件输出提示框的同时,就有其它activity组件对该activity弹框组件输出的提示框进行覆盖),系统可能会产生onpause方法和onstop方法调用顺序上的异常,出现在onpause方法未调用的情况下绕过onpause方法而直接调用onstop方法的情况。

因此,针对这些异常的应用场景,为了避免通过onstop方法中加载的重启逻辑对该activity弹框组件进行重复处理,系统在判断出该activity弹框组件的onstop方法被调用时,可以进一步判断该activity弹框组件的onpause方法是否已经被调用,如果该activity弹框组件的onpause方法已经被调用,表明该activity弹框组件已经通过执行onpause方法中加载的重启逻辑进行了处理,此时系统可以不再重复执行该onstop方法中加载的重启逻辑对该activity弹框组件进行重复处理。

当然,如果该activity弹框组件的onpause方法未被调用,此时系统可能发生了调用异常,系统可以正常运行onstop方法中加载的重启逻辑,重新启动该activity弹框组件。

其中,需要指出的是,系统在判断该activity弹框组件的onpause方法 是否已经被调用时,可以通过在该activity弹框组件的类文件中增加标记,然后通过检查类文件中是否存在对应的标记来实现。

例如,在实现时,当系统调用onpause方法中加载的重启逻辑对该activity弹框组件处理完成后,可以在该activity弹框组件的类文件中增加一个标记,该标记用于表示该activity弹框组件已经基于onpause方法中加载的重启逻辑处理完成。

当系统判断出该activity弹框组件的onstop方法被调用,可以进一步检查该activity弹框组件的类文件中是否存在上述标记,来确认该activity弹框组件的onpause方法是否已经被调用。如果类文件中存在上述标记,表明该activity弹框组件已经基于onpause方法中加载的重启逻辑处理完成,不再需要重复处理。

可见,通过这种方式,可以在onpause方法和onstop方法的调用顺序异常的应用场景中,避免通过onstop方法中加载的重启逻辑对该activity弹框组件进行重复处理。

以上实施例中,描述了系统通过判断activity弹框组件的onpause或者onstop方法是否被调用,来确认activity弹框组件是否其它activity被覆盖,并在判断出activity弹框组件被其它activity组件覆盖时,通过执行onpause或者onstop方法加载的重启逻辑重新启动该activity弹框组件,使得该activity弹框组件在预配置为singletask模式的情况下,可以被重新移至activity堆栈顶部,将输出的提示框重新显示在系统前台不被覆盖的详细过程。

然而,在android系统中,系统除了会在activity弹框组件被其它activity组件被其它activity组件覆盖时,调用onpause方法或者onstop方法以外,当用户通常执行正常的关闭事件,来关闭该activity弹框组件时,系统也会调用onpause方法或者onstop方法。

例如,当该activity组件处于running状态时,如果系统监听到了用户针对该activity组件的关闭事件,系统会按照顺序调用onpause方法和onstop 方法将该activity组件依次装换为pause状态和stop状态,然后自动调用ondestroy方法将该activity组件转换为destroy状态对该activity组件执行关闭。

其中,上述关闭事件可以包括与用户针对该activity弹框组件执行的关闭操作对应的事件;比如,以搭载android系统的触屏智能手机为例,该关闭事件可以包括用户针对手机上的返回键的点击事件,即用户可以通过点击手机上的返回键,来关闭该activity弹框组件。当手机系统在后台监听到用户针对返回键的点击事件时,可以按照顺序调用onpause方法和onstop方法将该activity组件依次装换为pause状态和stop状态,然后自动调用ondestroy方法针对该activity组件执行关闭。

可见,在用户针对该activity弹框组件进行正常关闭的应用场景中,由于对onpause方法或onstop方法的调用是由用户的正常关闭操作所触发,而并不是由该activity弹框组件被其它activity组件覆盖的事件所触发,因此如果系统仍然通过执行该activity弹框组件的onpause方法或onstop方法中加载的重启逻辑,重新启动该activity弹框组件,那么将会导致用户的误操作(即用户想要关闭该activity弹框组件,但通过上述重启逻辑却重新启动了该activity弹框组件)。

因此,为了避免误操作,当系统判断出该activity弹框组件的onpause方法或者onstop方法被调用时,系统在基于该onpause方法或者onstop方法中加载的重启逻辑重新启动该activity弹框组件之前,可以进一步判断该onpause方法或者onstop方法的调用是否是由用户针对该activity弹框组件的关闭事件所触发的。

如果该onpause方法或者onstop方法的调用是由用户针对该activity弹框组件的关闭事件所触发的,此时为针对该activity弹框组件的正常关闭流程,系统可以允许该activity弹框组件正常关闭,并按照针对该activity弹框组件的正常关闭流程进行响应,自动调用activity弹框组件的ondestroy方法关闭该ctivity弹框组件。

当然,如果该onpause方法或者onstop方法的调用并不是由用户针对该activity弹框组件的关闭事件所触发的,此时系统可以正常的执行onpause方法或者onstop方法中加载的重启逻辑,重新启动该activity弹框组件,将该activity弹框组件移至activity堆栈的顶部。

其中,需要指出的是,系统在判断上述onpause方法或者onstop方法的调用是否是由用户针对该activity弹框组件的关闭事件所触发的,仍然可以通过在该activity弹框组件的类文件中增加标记,然后通过检查类文件中是否存在对应的标记来实现。

例如,在实现时,当系统监听到用户针对该activity弹框组件的关闭事件,调用onpause方法以及onstop方法后,可以在该activity弹框组件的类文件中增加一个标记,该标记用于表示本次onpause方法以及onstop方法的调用是由用户针对该activity弹框组件的关闭事件触发的。

当系统判断出onpause方法或者onstop方法被调用,可以进一步检查该activity弹框组件的类文件中是否存在上述标记。如果类文件中存在上述标记,则表明本次onpause方法以及onstop方法的调用是由用户针对该该activity弹框组件的关闭事件触发,此时系统可以按照针对该activity弹框组件的正常关闭流程进行响应即可。

可见,通过这种方式,可以在用户针对该activity弹框组件执行正常关闭的应用场景中,避免由于系统通过执行该activity弹框组件的onpause方法或onstop方法中加载的重启逻辑,重新启动该activity弹框组件,而导致的误操作的问题。

以下结合具体的应用场景对以上实施例中的技术方案进行详细描述。

在本例中示出的应用的场景可以包括单点登录的应用场景,以及呼叫来电接听的应用场景。

一方面,在示出的单点登录的应用场景中,上述弹框提示的触发事件可以包括单点登录事件。在该应用场景中,用户可以使用登录账号在终端上登录,与该终端对应的登录服务端可以对该登录账号进行验证,当登录服务端 对该登录账号验证通过后,此时用户成功登录该终端。

当用户使用相同登录账号在其它终端上登录时,登录服务端会向当前的登录终端发送一个通知消息,触发当前的登录终端退出登录状态。当前的登录终端在接收到服务端发送的该通知消息后,可以认为监听到了单点登录事件,此时可以退出登录状态,并面向用户输出一个单点登录提示框,在该提示框中可以填充用于提示本次退出登录状态的原因的提示文案。

系统在通过启动activity弹框组件输出上述单点登录提示框时,为了避免输出的该提示框被其它提示框或者页面覆盖,可以默认将该activity弹框组件的运行状态设置为singletask模式。

当该activity弹框组件被其它activity组件覆盖时,系统会调用onpause方法或者onstop方法,其中在onpause方法或者onstop方法中预先加载了重启逻辑,系统通过执行该onpause方法或者onstop方法的重启逻辑后,可以重新启动该activity弹框组件。

由于该activity弹框组件被预配置为singletask模式,因此当该activity弹框组件被重新启动后,系统会将想要覆盖该activity弹框组件的其它activity组件弹出activity堆栈,该activity弹框组件会被重新移至activity堆栈顶部。在这种情况下,上述单点登录提示框将会重新在系统前台显示,而不被其它提示框或者页面覆盖,而且由于想要覆盖该activity弹框组件的其它activity组件被直接弹出activity堆栈,该其它activity组件所对应的交互界面将无法显示出来,对于用户来说无法感知到页面的变化。

可见,在单点登录的应用场景中,通过这种方式,可以避免由于单点登录提示框被覆盖,而造成的提示信息无法及时的提示给用户的问题。

另一方面,在示出的呼叫来电接听的应用场景中,上述弹框提示的触发事件可以包括呼叫来电事件。在该应用场景中,当终端的系统监听到呼叫来电时,可以向用户输出一个来电提示框提示用户接收到了来电,在该提示框中可以填充用于提示本次来电呼叫发起方的提示文案。用户可以针对该提示框进行相应的操作,比如向上滑动或者向下滑动,来接听该来电或者挂断该 来电。

在这种场景中,如果系统在接收到呼叫来电时所输出的来电提示框,被其它提示框或者页面所覆盖,那么可能导致用户无法针对来电提示框进行操作,来接听该来电,甚至还可能会导致该来电提示框被覆盖时,终端的按键(比如home键)失效等兼容性的问题。

系统在通过启动activity弹框组件输出上述来电提示框时,为了避免输出的该提示框被其它提示框或者页面覆盖,可以默认将该activity弹框组件的运行状态设置为singletask模式。

当该activity弹框组件被其它activity组件覆盖时,系统会调用onpause方法或者onstop方法,其中在onpause方法或者onstop方法中预先加载了重启逻辑,系统通过执行该onpause方法或者onstop方法的重启逻辑后,可以重新启动该activity弹框组件。

由于该activity弹框组件被预配置为singletask模式,因此当该activity弹框组件被重新启动后,系统会将想要覆盖该activity弹框组件的其它activity组件弹出activity堆栈,该activity弹框组件会被重新移至activity堆栈顶部。在这种情况下,上述来电提示框将会重新在系统前台显示,而不被其它提示框或者页面覆盖,而且由于想要覆盖该activity弹框组件的其它activity组件被直接弹出activity堆栈,该其它activity组件所对应的交互界面将无法显示出来,对于用户来说无法感知到页面的变化。

可见,在呼叫来电接听的应用场景中,通过这种方式,可以避免由于来电提示框被覆盖,而造成的用户无法接听来电,以及导致的终端按键的兼容性的问题。

当然,除了以上示出的应用场景以外,以上实施例中的技术方案还可以应用在其它的类似场景中,即在实际应用中,以上实施例中的技术方案所适用的应用场景,除了以上示出的应用场景以外,还可以包括所有需要面向用户输出弹框提示,并且输出的提示框被其它提示框或者页面覆盖时,可能会对系统中的app或者基本功能的使用造成影响的应用场景,本申请不再一一 列举。

在以上实施例中,通过在监听到弹框提示的触发事件时,启动activity弹框组件输出提示框;其中,该activity弹框组件的启动模式被预配置为单任务模式;判断该activity弹框组件是否被其它activity组件覆盖;当该activity弹框组件被其它activity组件覆盖时,重新启动该activity弹框组件,以触发将该activity弹框组件移至activity堆栈顶部使得所述提示框在系统前台显示;由于在本申请中,activity弹框组件为单任务模式,因此当该activity弹框组件被重新启动后,可以立即被移至activity堆栈顶部,从而在启动activity弹框组件向用户输出了提示框后,可以确保该提示框不被覆盖,始终在系统前台显示。

同时,由于本申请不再基于android系统中的window组件进行弹框,不再支持用户对弹框进行设置,因此可以避免由于用户通过手动设置在系统中将弹框禁掉导致无法进行弹框的问题。

另外,由于本申请通过activity弹框组件进行弹框,因此可以实现将系统中任意的activity组件作为主体,在任意页面中来进行弹框,从而具有很高的灵活性。

与上述方法实施例相对应,本申请还提供了装置的实施例。

请参见图2,本申请提出一种基于android的弹框提示装置20,应用于终端;其中,请参见图3,作为承载所述基于android的弹框提示装置20的终端所涉及的硬件架构中,通常包括cpu、内存、非易失性存储器、网络接口以及内部总线等;以软件实现为例,所述基于android的弹框提示装置20通常可以理解为加载在内存中的计算机程序,通过cpu运行之后形成的软硬件相结合的逻辑装置,所述装置20包括:

启动模块201,用于在监听到弹框提示的触发事件时,启动activity弹框组件输出提示框;其中,该activity弹框组件的启动模式被预配置为单任务模式;

判断模块202,用于判断该activity弹框组件是否被其它activity组件覆 盖;

重启模块203,用于在该activity弹框组件被其它activity组件覆盖时,重新启动该activity弹框组件,以触发将该activity弹框组件移至activity堆栈顶部使得所述提示框在系统前台显示。

在本例中,所述判断模块202具体用于:

判断所述activity弹框组件的onpause或者onstop方法是否被调用;

当所述activity弹框组件的onpause或者onstop方法被调用时,确定该activity弹框组件被其它activity组件覆盖。

在本例中,所述重启模块203具体用于:

当所述activity弹框组件的onpause方法被调用,基于所述onpause方法重新启动该activity弹框组件;

当所述activity弹框组件的onstop方法被调用时,判断所述activity弹框组件的onpause方法是否已被调用,如果所述onpause方法未被调用,则基于所述onstop方法重新启动该activity弹框组件。

在本例中,所述重启模块203进一步用于:

判断所述onpause方法或者所述onstop方法的调用是否是由针对所述activity弹框组件的关闭事件所触发;

如果所述onpause方法或者所述onstop方法的调用不是由针对所述activity弹框组件的关闭事件所触发,则基于所述onpause方法或者所述onstop方法重新启动该activity弹框组件。

在本例中,所述装置20还包括:

关闭模块204,用于在所述onpause方法或者所述onstop方法的调用是由针对所述activity弹框组件的关闭事件所触发时,针对所述activity弹框组件执行正常关闭。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申 请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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