一种应用状态管理方法及装置与流程

文档序号:15444875发布日期:2018-09-14 23:14阅读:156来源:国知局

本申请涉及终端用户界面技术领域,特别是涉及一种应用状态管理方法及装置。



背景技术:

智能操作系统(比如android)设备支持的功能日渐多样化。以android系统为例,应用多窗口模式在android终端上的应用越来越多。应用多窗口模式是指在屏幕上显示多个应用的界面,比较常用的如画中画模式(如两个应用的界面上下重叠,且位于上层的应用界面尺寸小于位于下层的应用界面)、分屏模式(比如两个应用的界面以上下并排方式显示在终端屏幕中)、自由模式(比如应用的界面位置或大小可由用户任意设置)等。

然而不管使用哪种模式,在现有技术中,当前处于活动状态的应用只能有一个。比如在分屏模式下,虽然可以显示两个应用的界面,但是只有一个应用处于活动状态,另一个应用则处于暂停状态。处于暂停状态的应用,其界面中的动态显示内容将停止显示。比如,如果处于暂停状态的应用为视频应用,则其视频窗口将会停止播放视频;再比如,如果处于暂停状态的应用为游戏,则其游戏界面将暂停不动。

由此可见,在应用多窗口模式下,当发生焦点切换时,如何保证焦点离开的应用的界面仍能够正常显示动态内容,是目前需要解决的问题。



技术实现要素:

本申请实施例提供了一种应用状态管理方法及装置,用以使得焦点离开的应用仍可以保持活动状态。

第一方面,提供一种应用状态管理方法,该方法包括:监测到焦点离开应用;判断所述应用是否是需要进行运行状态锁定的应用;若判定为是,则判断所述应用是否可见;若判定所述应用可见,则保持所述应用为运行状态。根据本方案,针对焦点离开的应用,在其可见的情况下也可以保持该应用处于运行状态,从而可以保持该应用的界面中的动态内容继续显示。

在一种可能的实现方式中,该方法还包括:若所述应用不可见,则设置所述未获得焦点的应用为暂停状态。根据本方案,若焦点离开的应用不可见,可将其设置为暂停状态,也不会影响用户感受。

在一种可能的实现方式中,所述判断所述应用是否可见,包括:获得所述应用的所有窗口;分别获取所述所有窗口的状态信息,并根据获取到的状态信息,判断所述所有窗口中是否包含存在可见区域的窗口;若判断为是,则判定所述应用可见,否则判定所述应用不可见。根据本方案,可根据应用包含的窗口是否存在可见区域,来判断该应用是否可见。

在一种可能的实现方式中,所述方法还包括:设置应用列表,所述应用列表中包括一个或多个应用,所述一个或多个应用为需要进行运行状态锁定的应用。相应地,所述判断所述应用是否是需要进行运行状态锁定的应用,包括:判断当前焦点离开的应用是否存在于所述应用列表,若判定为是,则判定当前焦点离开的应用为需要进行运行状态锁定的应用。根据本方案,可通过应用列表保存需要进行运行状态锁定的应用,这样,在判断一个应用是否是需要进行状态锁定的应用时,可使用该应用列表进行判断,实现方式简单易行,并且可以根据用户需要设置该应用列表。

在一种可能的实现方式中,保持所述应用为运行状态之后,所述方法还包括:若监测到所述应用从可见变为不可见,则将所述应用设置为暂停状态。

第二方面,提供一种应用状态管理方法,该包括:监测到焦点离开应用;判断所述应用是否是需要进行运行状态锁定的应用;若判定为是,则保持所述应用为运行状态。根据本方案,针对焦点离开的应用,也可以保持该应用处于运行状态,从而可以保持该应用的界面中的动态内容继续显示。

在一种可能的实现方式中,所述方法还包括:设置应用列表,所述应用列表中包括一个或多个应用,所述一个或多个应用为需要进行运行状态锁定的应用;所述判断所述应用是否是需要进行运行状态锁定的应用,包括:判断当前焦点离开的应用是否存在于所述应用列表,若判定为是,则判定当前焦点离开的应用为需要进行运行状态锁定的应用。根据本方案,可通过应用列表保存需要进行运行状态锁定的应用,这样,在判断一个应用是否是需要进行状态锁定的应用时,可使用该应用列表进行判断,实现方式简单易行,并且可以根据用户需要设置该应用列表。

第三方面,提供一种应用状态管理方法,该方法包括:监测到焦点离开应用,判断所述应用是否为播放类应用,若是,则维持所述应用的播放状态。根据本方案,对于播放类应用,可以在焦点离开该应用后仍维持该应用的播放状态。

第四方面,提供一种应用状态管理方法,该方法包括:监测到焦点离开应用,判断所述应用是否为播放类应用,若是,则判断所述应用是否可见,若可见,则维持所述应用的播放状态。根据本方案,对于播放类应用,可以在焦点离开后且该应用可见的情况下,仍维持该应用的播放状态。

第五方面,提供一种应用状态管理装置,该装置包括:应用识别模块,用于在监测到焦点离开应用时,判断所述应用是否是需要进行运行状态锁定的应用;可见性判断模块,用于在所述应用识别模块判定为是时,判断所述应用是否可见;状态设置模块,用于在所述判断模块判定为所述应用可见的情况下,保持所述应用为运行状态。

在一种可能的实现方式中,所述状态设置模块,还用于:若所述可见性判断模块判断所述应用不可见,则设置所述应用为暂停状态。

在一种可能的实现方式中,所述可见性判断模块,具体用于:获得所述应用的所有窗口;分别获取所述所有窗口的状态信息,并根据获取到的状态信息,判断所述所有窗口中是否包含存在可见区域的窗口;若判断为是,则判定所述应用可见,否则判定所述应用不可见。

在一种可能的实现方式中,还包括:应用列表设置模块,用于设置应用列表,所述应用列表中包括一个或多个应用,所述一个或多个应用为需要进行运行状态锁定的应用。所述应用识别模块,具体用于:判断当前焦点离开的应用是否存在于所述应用列表,若判定为是,则判定当前焦点离开的应用为需要进行运行状态锁定的应用。

在一种可能的实现方式中,所述状态设置模块,还用于:保持所述应用为运行状态之后,若监测到所述应用从可见变为不可见,则将所述应用设置为暂停状态。

第六方面,提供一种应用状态管理装置,包括:应用识别模块,用于监测到焦点离开应用时,判断所述应用是否是需要进行运行状态锁定的应用;状态设置模块,用于在所述应用识别模块判断为是的情况下,保持所述应用为运行状态。

在一种可能的实现方式中,还包括:应用列表设置模块,用于设置应用列表,所述应用列表中包括一个或多个应用,所述一个或多个应用为需要进行运行状态锁定的应用;所述应用识别模块,具体用于:判断当前焦点离开的应用是否存在于所述应用列表,若判定为是,则判定当前焦点离开的应用为需要进行运行状态锁定的应用。

第七方面,提供一种终端,包括:处理器、存储器;所述处理器,用于读取所述存储器中的程序,执行上述第一方面中任一项所述的方法,或第二方面中任一项所述的方法,或第三方面中任一项所述的方法,或第四方面中任一项所述的方法。

第八方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述第一方面中任一项所述的方法,或第二方面中任一项所述的方法,或第三方面中任一项所述的方法,或第四方面中任一项所述的方法。

附图说明

图1为本申请实施例提供的应用状态管理流程示意图;

图2为本申请实施中一种应用场景下的应用界面示意图;

图3为本申请另外的实施例提供的应用状态管理流程示意图;

图4为本申请实施例中判断应用是否可见的流程示意图;

图5为本申请实施例中另一种应用场景下的应用界面示意图;

图6为本申请实施例提供的焦点切换时的应用状态设置流程示意图;

图7为本申请实施例提供的系统架构示意图;

图8为本申请实施例提供的应用状态管理装置的结构示意图;

图9为本申请实施例提供的终端的结构示意图;

图10为本申请另外的实施例提供的应用状态管理装置的结构示意图;

图11为本申请另外的实施例提供的终端的结构示意图。

具体实施方式

本申请实施例涉及应用及其状态,下面首先对应用及其状态进行说明。

本申请实施例中涉及的“应用”,可以理解为应用程序或应用程序组件。以android系统为例,应用组件包括activity,是实现应用程序的主体,它承担了大量的显示和交互工作,一个应用程序通常包含多个activity。一个activity可提供一个独立的可视用户界面(userinterface,ui),用户可以通过activity所提供的ui完成某项任务。其中,一个activity所提供的ui中,可包含一个或多个窗口(window)。

应用的生命周期,是指该应用从启动到终止的所有阶段,处于不同阶段的应用具有不同的状态,应用的状态可包括:

(1)运行状态(resume状态,也称活动状态):应用在获得焦点后,处于运行状态;

(2)暂停状态(pause状态):处于暂停状态的应用没有焦点;

(3)停止状态(stop状态):处于停止状态的应用,停止运行,且界面不可见状态,没有焦点。

(4)销毁状态(destroy状态):应用进入销毁状态后,系统将回收该应用占用的资源。

应用的生命周期是由操作系统进行调度和控制的。在现有技术中,当某个应用获得焦点时,当前获得焦点的应用进入运行状态,当该应用失去焦点时,则当前失去焦点的应用进入暂停状态。在应用多窗口模式下,当发生焦点切换时,当前失去焦点的应用进入暂停状态,其界面上的动态内容将停止显示。进一步地,如果除了当前失去焦点的应用以外,还有其他未获得焦点的应用,则所述其他未获得焦点的应用也处于暂停状态。

其中,本申请实施例中,一个应用失去焦点,也可表述为焦点离开该应用。相应地,失去焦点的应用,也可表述为焦点离开的应用。本申请实施例中,上述两种表述方式含义相同。

为了在应用多窗口模式下,使失去焦点的应用的界面上的动态内容能够正常显示,本申请实施例提供了一种应用状态管理方法及装置,可以针对失去焦点的应用,使其能够处于运行状态,以使该应用的界面上的动态内容能够正常显示。

本申请实施例中,可以针对终端中的全部或部分应用,采用本申请实施例提供的方式,使其在失去焦点的情况下,仍可保持其运行状态。

在一种可能的实现方式中,可将在焦点离开时仍可能需要保持运行状态的应用的相关信息保存为预先约定的数据结构。该数据结构可以是一数据库表(比如数据库表形式的应用列表),或者其他表现形式。

以应用列表为例,该应用列表中的应用均为需要进行运行状态锁定的应用,这些应用可以在焦点离开时仍保持运行状态。可选地,该应用列表可以由用户根据需要设置,也可由系统设置。

以用户根据需要设置上述应用列表为例,本申请实施例中,可为用户提供设置界面,用户可通过该设置界面,从已安装到终端的应用中,选择需要进行运行状态锁定的应用,将选择的应用形成应用列表并保存。

所保存的应用列表中可包括应用的识别信息,比如应用包名,一个应用包名可以唯一标识一个应用。以应用包名为例,这些应用包名可组合成一个字符串,其存储方式可以是数据库格式,也可以是文件等形式。以数据库格式作为例子,其存储结构可以是以下键值对(key/value对):

key=”active_lock_apps”

alue=”com.android.mms;com.tencent.mm;com.android.youku;”

其中,数据的键值为active_lock_apps,表明该数据结构是用来存储需要进行运行状态锁定的应用的相关信息的;数据的取值为com.android.mms;com.tencent.mm;com.android.youku,该内容为以分号分割开的应用包名,用于表明对应的应用是需要进行运行状态锁定的应用。

一个应用被启动后,如果该应用是上述应用列表中的应用,可以在其界面中显示一特殊标识,以标识该应用为需要进行运行状态锁定的应用。比如,可在应用的界面上显示一个红色小锁的图标,表示该应用处于锁定状态,即该应用即使在失去焦点的情况下,仍可处于运行状态。

本申请实施例涉及应用间的焦点切换。下面首先对本申请实施例中所使用的描述术语进行说明。

本申请实施例中,根据应用是否获得焦点,一个应用可被描述为“获得焦点的应用”或“未获得焦点的应用”。其中,“未获得焦点的应用”可以是指在焦点切换时,当前失去焦点的应用。“未获得焦点的应用”也可以是指当前所有未获得焦点的应用,包括在焦点切换时当前失去焦点的应用以及在焦点切换前后均没有焦点的应用,可以存在多个应用属于“未获得焦点的应用”。

下面结合附图对本申请实施例提供的应用状态管理流程进行详细描述。

参见图1,为本申请实施例提供的应用状态管理流程的示意图。

该流程可在终端侧实现。具体地,该流程可由终端实现,或者由终端中的相关装置实现。

该终端具有智能操作系统,比如android系统。举例来说,该终端可以是移动终端或pc(个人电脑)等设备,所述移动终端可以是手机、pda(personaldigitalassistant,掌上电脑)车载终端或智能穿戴设备等。

本申请实施例中,可通过以下方式,标识出需要针对哪些或哪类应用,在其失去焦点时需要以本申请实施例提供的方式进行应用状态管理,也就是说,针对这些应用,需要标识出其为需要进行运行状态锁定的应用。

方式一:

可以设置一应用列表,该应用列表中包括一个或多个应用,所述一个或多个应用为需要进行运行状态锁定的应用。

可选地,该应用列表中的应用为播放类应用,或者说,将播放类应用设置在该应用列表中。所述播放类应用可以理解为具有播放功能的应用,可以播放动态内容。播放类应用通常包含播放窗口以播放动态内容,比如,所述播放类应用可包括视频应用(用于播放视频)、游戏等。

具体实施时,用户可根据自己的需求,将终端中的全部或部分播放类应用设置在应用列表中。操作系统也可以针对全部或部分播放类应用,视为需要进行运行状态锁定的应用。其中,该应用列表的数据结构或表现形式,可参见前述实施例,在此不再重复。

方式二:

通过应用的属性(比如应用类型),识别出该应用是否是在其失去焦点时需要以本申请实施例提供的方式进行应用状态管理。操作系统或用户可以将某一类或多类应用(比如播放类应用),视为在失去焦点时需要以本申请实施例提供的方式进行应用状态管理的应用。

以播放类应用为例,操作系统可通过识别应用的类型属性来判断应用是否属于播放类应用。应用的属性中通常包含应用类型属性,可以作为操作系统识别应用是否为播放类应用的依据。操作系统或用户也可以为应用设置属性标识,以标识其是否为播放类应用,被标识为播放类应用的应用,当前失去焦点时,需要采用本申请实施例提供的方法对其应用状态进行管理。

如图1所示,该流程可包括:

s101:监测到焦点离开应用。

其中,操作系统可监测焦点切换情况,也就是说,当发生焦点切换时,可以检测到焦点离开的应用。

s102:判断当前焦点离开的应用是否是需要进行运行状态锁定的应用;若判定为是,则转入s103,否则转入s104。

以上述方式一中提供应用列表的方式为例,该步骤中,可在预先设置的应用列表中查找当前焦点离开的应用,如果该应用存在于该应用列表中,则判定该应用是需要进行运行状态锁定的应用。比如,可在该应用列表中查找当前焦点离开的应用的包名,若查找到该应用包名,则判定该应用为需要进行运行状态锁定的应用。

以上述方式二中基于应用属性进行识别的方式为例,该步骤中,可判断当前焦点离开的应用是否是指定类型的应用(比如是否为播放类应用),若是,则转入s103,否则转入s104。

s103:在s102中判定当前焦点离开的应用是需要在焦点离开时进行运行状态锁定的应用的情况下,设置该应用为运行状态。

以播放类应用为例,该步骤中,在判断焦点离开的应用为播放类应用的情况下,可维持该播放类应用的播放状态。

s104:在s102中判定当前焦点离开的应用是不需要进行运行状态锁定的应用的情况下,按照现有技术提供的方式对该应用的状态进行设置。比如,设置该应用为暂停状态。

可选地,如果在焦点切换时,除了当前焦点离开的应用以外,还存在其他应用也处于未获得焦点的状态(比如在应用多窗口模式能够支持两个以上的应用界面显示的情形下,可能存在多个未获得焦点的应用,即某些应用在焦点切换前后都未获得焦点),则可以保持这些应用当前的状态不变,比如若所述其他应用为运行状态,则可以保持该应用的运行状态不变。

基于上述图1所示的流程,以终端采用上下分屏模式为例,在一种应用场景中,在以本申请实施例提供的方式设置的应用列表中,包含应用a的包名和应用b的包名,其中,应用a为视频应用,应用b为游戏。当前,应用a被启动,应用b尚未被启动,终端的屏幕上仅显示有应用a的界面,且焦点位于应用a,如图2中的(a)所示。

当用户启动应用b后,焦点从应用a切换到应用b,应用b获得焦点,并处于运行状态。应用a的界面和应用b的界面以上下分屏模式显示在终端屏幕中。由于应用a的包名存在于该应用列表中,表明其属于需要进行运行状态锁定的应用,因此即使应用a失去了焦点,但应用a仍保持运行状态,其视频窗口仍播放视频,如图2中的(b)所示。此时用户既可以玩游戏,又可以观看应用a播放的视频。

当用户将焦点再次切换回到应用a后,应用a获得焦点,继续保持运行状态。由于应用b的包名存在于该应用列表中,表明其属于需要进行运行状态锁定的应用,因此即使应用b失去了焦点,但应用b仍保持运行状态,其游戏界面仍显示游戏的运行场景,如图2中的(c)所示。此时用户既可以观看应用a播放的视频,又可以关注游戏的运行情况。

本申请实施例中,可有多个应用同时处于运行状态。基于上述图1所示的流程,以终端采用上下分屏模式为例,在一种应用场景中,在以本申请实施例提供的方式设置的应用列表中,包含应用a的包名和应用b的包名,其中,应用a为视频应用,应用b为游戏,应用c为社交应用。当前,应用a、应用b和应用c被启动,终端的屏幕上以上下分屏模式显示有这3个应用的界面,且焦点位于应用a,应用a和应用b为运行状态,应用c为暂停状态。

当用户将焦点从应用a切换到应用b后,应用b获得焦点,继续保持运行状态。由于应用a的包名存在于该应用列表中,表明其属于需要进行运行状态锁定的应用,因此即使应用a失去了焦点,但应用a仍保持运行状态,其视频窗口仍进行视频播放,应用c的包名不在该应用列表中,表明其不属于需要进行运行状态锁定的应用,因此当前未获得焦点时,处于暂停状态。

当用户将焦点从应用b切换到应用c后,应用c获得焦点,进入运行状态。由于应用a和应用b的包名均存在于该应用列表中,表明均属于需要进行运行状态锁定的应用,因此即使未获得焦点,仍保持运行状态。

虽然上述例子中,是以分屏模式为例描述的,但本申请实施例也可适用于其他应用多窗口模式,比如画中画模式。

以采用画中画模式为例,应用a和应用b均属于播放类应用(本例子中,播放类应用为需要进行运行状态锁定的应用)。当应用a和应用b同时开启时,应用b的界面和应用a的界面重叠,且位于应用a的界面上层,应用b的界面尺寸小于应用a的界面尺寸,使得应用a的界面部分可见,即应用b为画中画应用,应用a为背景应用。当焦点在应用a和应用b之间进行切换时,由于应用a和应用b均属于播放类应用,因此无论焦点切换到应用a和应用b中的哪个应用,这两个应用均处于运行状态。与现有技术提供的画中画模式相比,画中画应用也可获得焦点,并在失去焦点时,画中画应用仍可显示动态内容。这就解决了现有技术中采用画中画模式时画中画应用无法输入的问题。因为现有技术中,不允许画中画应用获得焦点,因为若画中画应用一旦获得焦点,其背景应用势必要进入暂停状态而导致背景应用暂停,采用本申请实施例提供的方法,画中画应用也可以正常获得焦点,同时可以保证背景应用的正常显示。

根据以上实施例可以看出,一个应用当前失去焦点后按照操作系统的常规流程进入暂停状态之前,可被拦截,然后按照本申请实施例提供的方式进行应用状态的设置。具体地,如果该应用属于需要进行状态锁定的应用,则不会像操作系统的常规流程一样,进入暂停状态,而是设置为运行状态(或者说保持运行状态)。这种情况下,对于该当前失去焦点的应用本身而言,除了当前失去焦点之外,并未发生任何改变,即其生命周期并没有变化,从而可以继续正常的显示,而不会被其它应用中断内容显示。

在本申请另外的实施例中,若某个应用属于需要进行运行状态锁定的应用,在其失去焦点的情况下,可进一步根据其是否可见来设置该应用的状态。这是因为,对于该应用来说,当前失去焦点时,由于某些原因(比如当前获得焦点的应用的界面将当前失去焦点的应用的界面遮挡),使该失去焦点的应用的界面被完全遮挡,即对用户来说完全不可见,这种情况下,保持该失去焦点的应用为运行状态,可能意义不大,因此可将该应用设置为暂停状态。

参见图3,为本申请另外的实施例提供的应用状态管理流程进行详细描述。

该流程可在终端侧实现。具体地,该流程可由终端实现,或者由终端中的相关装置实现。所述终端的类型,与前述实施例中终端的类型相似,在此不再重复。

本申请实施例中,可通过以下方式,标识出需要针对哪些或哪类应用,在其失去焦点时需要以本申请实施例提供的方式进行应用状态管理,也就是说,针对这些应用,在焦点离开时需要根据该应用是否可见来设置其应用状态。

方式一:

可以设置一应用列表,该应用列表中包括一个或多个应用,所述一个或多个应用为需要进行运行状态锁定的应用。

可选地,该应用列表中的应用为播放类应用,或者说,将播放类应用设置在该应用列表中。具体实施时,用户可根据自己的需求,将终端中的全部或部分播放类应用设置在应用列表中。操作系统也可以针对全部或部分播放类应用,视为需要进行运行状态锁定的应用。其中,该应用列表的数据结构或表现形式,可参见前述实施例,在此不再重复。

方式二:

通过应用的属性(比如应用类型),识别出该应用是否是在其失去焦点时需要以本申请实施例提供的方式进行应用状态管理。操作系统或用户可以将某一类或多类应用(比如播放类应用),视为在失去焦点时需要以本申请实施例提供的方式进行应用状态管理的应用。

以播放类应用为例,操作系统可通过识别应用的类型属性来判断应用是否属于播放类应用。应用的属性中通常包含应用类型属性,可以作为操作系统识别应用是否为播放类应用的依据。操作系统或用户也可以为应用设置属性标识,以标识其是否为播放类应用,被标识为播放类应用的应用,当前失去焦点时,需要采用本申请实施例提供的方法对其应用状态进行管理。

如图3所示,该流程可包括:

s301:监测到焦点离开应用。

其中,操作系统可监测焦点切换情况,也就是说,当发生焦点切换时,可以检测到焦点离开的应用。

s302:判断当前焦点离开的应用是否是需要进行运行状态锁定的应用;若判定为是,则转入s303,否则转入s306。

该步骤的具体实现,与图1中的s102的具体实现类似,可参见前述实施例中的s102,在此不再重复。

s303:在s302中判定为是的情况下,判断焦点离开的应用是否可见,若可见,则转入s304,否则转入s305。

s304:若s303中判定为是,则设置该应用为运行状态。

s305:若s303中判定为否,则设置该应用为暂停状态。

该步骤中,在s302中判定为否的情况下,可按照现有技术提供的方式对该应用的状态进行设置。比如,设置所述未获得焦点的应用为暂停状态。

s306:在s302中判定为否的情况下,按照现有技术提供的方式对该应用的状态进行设置。比如,设置该应用为暂停状态。

可选地,如果在焦点切换时,除了当前焦点离开的应用以外,还存在其他应用也处于未获得焦点的状态(比如在应用多窗口模式能够支持两个以上的应用界面显示的情形下,可能存在多个未获得焦点的应用,即某些应用在焦点切换前后都未获得焦点),则可以参照上述图3所示的流程,执行以下步骤:

判断所述其他应用是否是需要进行运行状态锁定的应用,若判定为是,则继续判定所述其他应用当前是否可见,否则保持该应用当前的状态不变,比如保持该应用当前的暂停状态不变。若根据所述其他应用是否可见的判断结果,判定所述其他应用可见,则可以保持该应用的运行状态不变,否则将该应用设置为暂停状态。

可选地,当前焦点所在的应用的窗口状态发生变化时,可能导致该应用的界面将其他处于运行状态的应用的界面完全遮挡住,使所述其他处于运行状态的应用从可见变为不可见,这种情况下,可以将被完全遮挡住的处于运行状态的应用设置为暂停状态。举例来说,焦点从应用a切换到应用b,应用b因获得焦点而处于运行状态,应用a由于属于播放类应用且该应用当前可见,因此也保持运行状态。当用户将应用b的界面完全遮挡住应用a的界面时,应用a的界面从可见变为不可见,因此可设置应用a为暂停状态。

可选地,本申请实施例可以采用以下方法来判断一个应用是否可见:获得该应用的所有窗口;分别获取所述所有窗口的状态信息,并根据获取到的状态信息,判断该窗口中是否包含存在可见区域的窗口;若判断为是,则判定该应用可见,否则判定该应用不可见。

示例性地,图4示出了一种判断应用是否可见的流程,如图所示,该流程可包括:

s401:获取当前系统中所有的窗口(window)。其中,一个应用界面可以由多个窗口组成。

s402:获取这些窗口的窗口状态(windowstate)对象的属性。

其中,一个窗口对应一个窗口状态对象。一个窗口的窗口状态对象属于系统类对象,该对象的属性用来描述该窗口的各种属性,其中包括该窗口所属的应用的信息,比如应用包名,还可包括visiblerect属性,根据visiblerect属性的值可以判断该窗口是否存在可见区域,若visiblerect属性的值为空,则表明该窗口不存在可见区域,即该窗口不可见。

s403:根据这些窗口的状态对象属性信息,获得属于目标应用的所有窗口。

这里,所述目标应用是指焦点离开的应用。

s404:从属于目标应用的所有窗口中获得当前未遍历过的一个窗口。

s405:根据当前窗口的窗口状态对象属性信息,获取该窗口的visiblerect属性的值,若当前窗口的visiblerect属性的值不为空,则转入s406,否则转入s407。

s406:判定目标应用的可见状态为真,即该目标应用可见,并结束本流程。

s407:判断属于目标应用的所有窗口是否已遍历完成,若是,则转入s408,否则返回s404。

s408:判定目标应用的可见状态为假,即该目标应用不可见,结束本流程。

通过上述图4所示的流程,若目标应用包含的窗口中存在可见区域,则说明该目标应用可见,则该目标应用的可见状态置为真。若遍历结束,该目标应用包含的所有窗口中均不存在可见区域,则说明该目标应用不可见,则该目标应用的可见状态置为假。

基于上述图3所示的流程,以终端采用自由模式为例,在一种应用场景中,在以本申请实施例提供的方式设置的应用列表中,包含应用a的包名、应用b的包名以及应用c的包名,其中,应用a为视频应用,应用b为游戏,应用c也为视频应用。当前,应用a、应用b和应用c均被启动,焦点在应用a上,应用a、应用b和应用c均可见,且均处于运行状态,如图5中的(a)所示。其中,应用a、应用b和应用c的界面重叠放置,从上到下依次为应用a的界面501、应用b的界面502、应用c的界面503,即,应用b的界面502被应用a的界面501部分遮挡,应用c的界面503被应用b的界面502部分遮挡。

当用户将焦点切换到应用b后,应用b获得焦点,由于应用b在焦点切换前已处于运行状态,因此仍保持运行状态,应用b的界面502被显示在最上层。应用a失去焦点,应用a的界面501被应用b的界面502完全遮挡而不可见,因此虽然应用a的包名在该应用列表中,但由于该应用不可见,因此被设置为暂停状态,即应用a从运行状态转换为暂停状态。应用c的包名在该应用列表中,且该应用可见,由于应用a在焦点切换前已处于运行状态,因此继续保持运行状态,如图5中的(b)所示。其中,应用a的界面501用虚线标识,表示该应用的界面被应用b的界面502遮挡。

当用户将焦点切换到应用c,应用c获得焦点,继续保持运行状态,应用c的界面503被显示在最上层。应用b失去焦点,应用b的界面502被应用c的界面503完全遮挡而不可见,因此虽然应用b的包名在该应用列表中,但由于该应用不可见,因此被设置为暂停状态,即应用b从运行状态转换为暂停状态。虽然应用a的包名在该应用列表中,但其界面被完全遮挡,因此保持暂停状态,如图5中的(c)所示。其中,应用a的界面501和应用b的界面502用虚线标识,表示应用a的界面501和应用b的界面502被应用b的界面503遮挡。

虽然上述例子中,是以分屏模式为例描述的,但本申请实施例也可适用于其他应用多窗口模式,比如画中画模式。

根据以上实施例可以看出,一个应用失去焦点后按照操作系统的常规流程进入暂停状态之前,可被拦截,然后按照本申请实施例提供的方式进行应用状态的设置。具体地,如果该应用属于需要进行状态锁定的应用,且该应用可见(即该应用的界面未被完全遮挡),则不会像操作系统的常规流程一样,进入暂停状态,而是保持为运行状态。这种情况下,对于该焦点离开的应用本身而言,除了当前失去焦点之外,并未发生任何改变,即其生命周期并没有变化,从而可以继续正常的显示,而不会被其它应用中断内容显示。如果该应用不属于需要进行状态锁定的应用,或者虽然属于需要进行状态锁定的应用,但该应用不可见(即该应用的界面被完全遮挡),则设置该应用为暂停状态。

基于上述图3所示的流程,下面结合图6,以发生焦点切换为例,描述应用的状态管理流程。

如图7所示,当发生焦点切换后,执行如下流程:

s601:将当前获得焦点的应用调整到前台。

s602:获得系统中已被开启的所有应用中的一个应用。

s603:判断该应用是否获得了焦点,若未获得焦点,则转入s605,若获得了焦点,则转入s604。

s604:在s603中判定该应用获得焦点的情况下,按照现有技术提供的方法进行处理,比如,将该应用的状态设置为运行状态。

s605:在s603中判定为否的情况下,进一步判断该应用的包名是否存在与预先设置的应用列表中,若判定为是,则转入s606,否则转入s609。其中,该应用列表中的应用为需要进行运行状态锁定的应用。

以前述实施例中所述key/value对形式的应用列表为例,该步骤中,可以从该key/value对中获取出应用包名列表active_lock_apps,若发现当前焦点离开的应用的包名为该列表中的包名,则判定该应用为需要进行运行状态锁定的应用。

s606:在s605中判定为是的情况下,进一步判断该应用的可见状态,若可见状态为真,则表明该应用可见,则转入s607,否则,若可见状态为假,则表明该应用不可见。则转入s608。

该步骤中,判断应用是否可见的方法,可参见图4所示的流程中的相关描述,在此不再重复。

s607:在s606中判定该应用的可见状态为真的情况下,保持该应用为运行状态。

该步骤中,在判定该应用的可见状态为真的情况下,表明该应用的界面对用户来说可见,但该应用当前处于无焦点不能操作的状态,说明切换焦点前,该应用处于运行状态,此时处于刚失去焦点的时机,此时需要保持该应用的运行状态不变。

s608:在s606判定该应用的可见状态为假的情况下,将该应用的状态设置为暂停状态。

该步骤中,由于该应用的可见状态为假,即对于用户来说不可见,因此将该应用设置为暂停状态,也不会影响用户体验。

s609:在s604中判定该应用不在所述应用列表的情况下,则表明对失去焦点的应用无需保持运行状态,因此将该应用的状态设置为暂停状态。

s610:判断是否遍历完所有的应用,若是则结束本流程,否则转入s601,以便获取下一个尚未遍历到的应用,并依照上述流程对当前获取到的应用的状态进行管理。

上述图6所示的流程中,s601~s604、s609为操作系统框架下的规范流程,s605~s607为本申请实施例为了实现运行状态锁定而使用的流程。

本申请实施例提供的输入操作作用区域确定功能,可通过终端操作系统中应用框架层内的软件模块实现。

图7示例性地示出了终端的操作系统架构,其中仅示出了与本申请实施例相关的组成部分。如图所示,在该操作系统的架构中,应用框架层中可包括“应用状态管理装置”,该装置具体可以表现为一种系统服务,可实现本申请实施例提供的主页面设置功能。应用框架层中还可包括输入管理服务(inputmanagerservice)、窗口管理服务(windowsmanagerservice)等系统服务。输入管理服务从下层的输入设备驱动(inputdevicedriver)读取基于用户操作生成的事件,进行处理。窗口管理服务可对应用的窗口进行管理,比如设置窗口状态、绘制窗口等。“应用状态管理装置”可按照上述实施例描述的方式进行应用状态的设置。

可以理解的是,终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本申请中所申请的实施例描述的各示例的单元(器、器件)及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的技术方案的范围。

本申请实施例可以根据上述方法示例对终端进行功能单元(器、器件)的划分,例如,可以对应各个功能划分各个功能单元(器、器件),也可以将两个或两个以上的功能集成在一个处理单元(器、器件)中。上述集成的单元(器、器件)既可以采用硬件的形式实现,也可以采用软件功能单元(器、器件)的形式实现。需要说明的是,本申请实施例中对单元(器、器件)的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用集成的单元(器、器件)的情况下,图8示出了本申请实施例提供的一种应用状态管理装置的结构示意图。参阅图8所示,装置800包括:应用识别模块801、状态设置模块802,进一步地还可包括应用列表设置模块803。

应用识别模块801用于监测到焦点离开应用时,判断所述应用是否是需要进行运行状态锁定的应用;状态设置模块802用于在所述应用识别模块判断为是的情况下,保持所述应用为运行状态。

可选地,应用列表设置模块803用于设置应用列表,所述应用列表中包括一个或多个应用,所述一个或多个应用为需要进行运行状态锁定的应用。相应的,应用识别模块801可具体用于:判断当前焦点离开的应用是否存在于所述应用列表,若判定为是,则判定当前焦点离开的应用为需要进行运行状态锁定的应用。

图9示出了本申请实施例提供的终端900的结构示意图,即示出了装置800的另一结构示意图。参阅图9所示,终端900包括处理器901、存储器902.进一步地还可包括显示器903。

其中,处理器901也可以为控制器。所述处理器901被配置为支持终端执行图1涉及的功能。终端900还可以包括存储器902,存储器902用于与处理器901耦合,其保存终端必要的程序指令和数据。其中,处理器901、显示器903和存储器902相连,该存储器902用于存储指令,该处理器901用于执行该存储器902存储的指令,以控制显示器903进行用户界面显示,完成上述方法中终端执行相应功能的步骤。

本申请实施例中,装置800和终端900所涉及的与本申请实施例提供的技术方案相关的概念,解释和详细说明及其他步骤请参见前述方法或其他实施例中关于这些内容的描述,此处不做赘述。

在采用集成的单元(器、器件)的情况下,图10示出了本申请实施例提供的一种应用状态管理装置的结构示意图。参阅图10所示,装置1000包括:应用识别模块1001、可见性判断模块1002、状态设置模块1003,进一步地还可包括应用列表设置模块1004。

应用识别模块1001用于在监测到焦点离开应用时,判断所述应用是否是需要进行运行状态锁定的应用;可见性判断模块1002用于在所述应用识别模块判定为是时,判断所述应用是否可见;状态设置模块1003用于在所述判断模块判定为所述应用可见的情况下,保持所述应用为运行状态。

可选地,状态设置模块1003还用于:若所述可见性判断模块判断所述应用不可见,则设置所述应用为暂停状态。

可选地,可见性判断模块1002具体用于:获得所述应用的所有窗口;分别获取所述所有窗口的状态信息,并根据获取到的状态信息,判断所述所有窗口中是否包含存在可见区域的窗口;若判断为是,则判定所述应用可见,否则判定所述应用不可见。

可选地,应用列表设置模块1004用于设置应用列表,所述应用列表中包括一个或多个应用,所述一个或多个应用为需要进行运行状态锁定的应用。相应的,应用识别模块1001具体用于:判断当前焦点离开的应用是否存在于所述应用列表,若判定为是,则判定当前焦点离开的应用为需要进行运行状态锁定的应用。

可选地,状态设置模块1003,还用于:保持所述应用为运行状态之后,若监测到所述应用从可见变为不可见,则将所述应用设置为暂停状态。

图11示出了本申请实施例提供的终端1100的结构示意图,即示出了装置1000的另一结构示意图。参阅图11所示,终端1100包括处理器1101、存储器1102.进一步地还可包括显示器1103。

其中,处理器1101也可以为控制器。所述处理器1101被配置为支持终端执行图3、图4或图6涉及的功能。终端1100还可以包括存储器1102,存储器1102用于与处理器1101耦合,其保存终端必要的程序指令和数据。其中,处理器1101、显示器1103和存储器1102相连,该存储器1102用于存储指令,该处理器1101用于执行该存储器1102存储的指令,以控制显示器1103进行用户界面显示,完成上述方法中终端执行相应功能的步骤。

本申请实施例中,装置1000和终端1100所涉及的与本申请实施例提供的技术方案相关的概念,解释和详细说明及其他步骤请参见前述方法或其他实施例中关于这些内容的描述,此处不做赘述。

需要说明的是,本申请实施例上述涉及的处理器可以是中央处理器(centralprocessingunit,cpu),通用处理器,数字信号处理器(digitalsignalprocessor,dsp),专用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。其中,所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。

本申请实施例还提供一种计算机存储介质,用于存储一些指令,这些指令被执行时,可以完成前述终端所涉及的任意一种方法。

本申请实施例还提供一种计算机程序产品,用于存储计算机程序,该计算机程序用于执行上述方法实施例中涉及的方法。

本申请实施例提供了一种芯片,该芯片包括处理器,用于支持终端实现前述终端所涉及的功能。在一种可能的设计中,所述芯片还包括存储器,所述存储器,用于保存终端必要的程序指令和数据。

本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

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