应用程序控制方法与流程

文档序号:12733101阅读:945来源:国知局
应用程序控制方法与流程

技术领域

本发明涉及信息技术领域,具体而言,涉及一种应用程序控制方法。



背景技术:

目前,在智能电视中存在大量的应用程序,各个应用程序之间存在着各种类型的共存、互斥关系,在基于Linux的TV系统中,缺乏有效的应用程序管理机制,所有应用程序都是单任务独占式运行,例如当应用程序A退出时,不能回到启动A时的UI控制界面,用户必须重新启动UI控制界面才能选择启动其他应用程序,用户的操作过程也较为繁琐。

因此,如何管理应用程序,简化用户的操作过程称为亟待解决的技术问题。



技术实现要素:

本发明所要解决的技术问题在于,提供一种新的应用程序控制方法,能够增强应用程序之间的交互性,简化用户的操作过程。

有鉴于此,根据本发明的一个方面,提供了一种应用程序控制方法,包括:建立应用程序链表,将已启动的应用程序加入所述应用程序链表,其中,所述应用程序链表中的每一应用程序通过其状态接口向所述应用程序链表中的其他应用程序广播本程序的状态消息,以及接收来自所述应用程序链表中的其他应用程序的状态消息;所述应用程序根据接收到的状态消息和程序当前运行状态确定是否改变本程序的运行状态,以实现焦点切换。

其中,作为从应用程序启动入口的主界面应用程序和所述从应用程序均具有对应的状态接口,可接收来自其他应用程序的状态消息以及广播本程序的状态消息。

在该技术方案中,创建了一套管理机制,让HOMEUI作为主应用程序,其他应用程序为从应用程序,各应用程序具有对应的状态接口,在应用广播消息机制之后,各应用程序之间通过各自的状态接口,能够获知其他应用程序的状态,使得应用程序之间能够进行交互,也便于管理各应用程序。各应用程序根据其他应用程序广播的状态消息来确定是否改变本程序的运行状态,从而完成应用程序的管理与控制。

在终端运行主界面应用程序时,可在终端上显示用户交互主界面(UI控制界面),在该用户交互主界面上集成了终端的各类应用程序(即从应用程序),用户可在该用户交互主界面上选择启动从应用程序。各从应用程序的运行状态将影响主界面应用程序的运行状态。由于本发明中的各应用程序能够向外广播自己的状态信息,因此主界面应用程序能够监控各从应用程序的运行状态,从而主动改变主界面应用程序的运行状态,无需用户主动控制主界面应用程序的运行状态。例如当从应用程序—浏览器从前台进入后台时,主界面应用程序就自动根据监测到的浏览器的状态调整自己的运行状态,从原先的后台切换到前台,无需用户重新启动UI控制界面,从而减少了用户的操作步骤,使用户的操作更加便捷。

附图说明

图1是根据本发明的实施例的应用程序控制方法的流程图;

图2是根据本发明的实施例的应用程序链表的结构示意图;

图3A是根据本发明的实施例的用户交互主界面的示意图;

图3B是根据本发明的实施例的主界面应用程序的运行状态变化示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。

图1是根据本发明的实施例的应用程序控制方法的流程图。

如图1所示,根据本发明的实施例的应用程序控制方法可以包括以下步骤:步骤102,终端中的应用程序包括主界面应用程序和从应用程序,主界面应用程序作为各从应用程序的启动入口,主界面应用程序和每一从应用程序均具有对应的状态接口,主界面应用程序和每一从应用程序均通过各自的状态接口接收来自其他应用程序的状态消息以及广播本程序的状态消息;步骤104,终端中的每一应用程序根据接收到的状态消息和程序当前运行状态确定是否改变本程序的运行状态,以实现焦点切换。

其中,每一应用程序对应的状态接口均包括暂停状态接口、重新运行状态接口、停止状态接口、退出状态接口,暂停状态接口用于接收或广播暂停状态消息,并在应用程序暂停时,保存当前状态信息,重新运行状态接口用于接收或广播恢复运行状态消息,并在应用程序暂停时,保存当前运行数据,停止状态接口用于接收或广播停止状态消息,在应用程序停止运行时,释放占用资源,退出状态接口用于接收或广播强制退出状态消息,强制应用程序退出。

在本实施例中,创建了一套管理机制,让HomeUI作为主应用程序,其他应用程序为从应用程序,各应用程序具有对应的状态接口,在应用广播消息机制之后,各应用程序之间通过各自的状态接口,能够获知其他应用程序的状态,使得应用程序之间能够进行交互,也便于管理各应用程序。各应用程序根据其他应用程序广播的状态消息来确定是否改变本程序的运行状态,从而完成应用程序的管理与控制。

各从应用程序的运行状态将影响主界面应用程序的运行状态。由于本发明中的各应用程序能够向外广播自己的状态信息,因此主界面应用程序能够监控各从应用程序的运行状态,从而主动改变主界面应用程序的运行状态,无需用户主动控制主界面应用程序的运行状态。例如当从应用程序—浏览器从前台进入后台时,主界面应用程序就自动根据监测到的浏览器的状态调整自己的运行状态,从原先的后台切换到前台,无需用户重新启动UI控制界面,从而减少了用户的操作步骤,使用户的操作更加便捷。

需说明的是,运行状态包括处于前台焦点状态,以及后台状态、退出状态,其中,后台状态包括暂停状态、停止状态、后台运行状态,后台运行表示应用程序处于非焦点状态,但仍在运行当中,例如显示屏显示浏览网页,播放器虽然处于后台,但仍在播放音乐,这种运行状态可称之为后台运行状态。

在上述技术方案中,优选的,所述主界面应用程序还通过其状态接口接收基于用户指令生成的控制消息,并将所述控制消息广播至每一所述从应用程序,所述控制消息中包含程序名称;所述从应用程序接收到所述控制消息后,判断所述控制消息是否包含本程序的名称,若包含有本程序的名称,则响应所述控制消息,改变本程序的运行状态,所述控制消息包括启动控制消息、暂停控制消息、重新运行控制消息、退出控制消息。

在终端运行主界面应用程序时,可在终端上显示用户交互主界面(UI控制界面),在该用户交互主界面上集成了终端的各类应用程序(即从应用程序),用户可在该用户交互主界面上选择启动从应用程序。在TV系统中,所有应用程序的配置信息都会存储在一个xml配置文件中,里面包含了应用程序所在的路径,当从主界面应用程序中启动浏览器时,主界面应用程序就会向操作系统发送启动命令,比如在linux系统下是“./path/browser --u www.google.com”。在这种情况下控制消息是主动的,就是主动启动一个从应用程序。因此主界面应用程序除了具有接收以及广播状态消息的功能外,还具有传播控制消息的功能,而从应用程序仅有接收控制消息、其他应用程序广播的状态消息以及广播本程序的状态消息的功能。

在上述任一技术方案中,优选的,在所述从应用程序先后接收到多个具有不同内容的控制消息时,所述从应用程序按照先后顺序处理所接收到的多个不同的控制消息。

在一些场景下,从应用程序可能会连续接收到不同的控制消息,例如先接收到重新运行的控制消息,又接收到暂停的控制消息,从应用程序会根据先后顺序先响应重新运行的控制消息,接着响应暂停的控制消息。

在上述技术方案中,优选的,建立应用程序链表,将已启动的应用程序加入所述应用程序链表;所述应用程序链表中的每一应用程序通过其状态接口向所述应用程序链表中的其他应用程序广播本程序的状态消息以及接收来自所述应用程序链表中的其他应用程序的状态消息。

为了便于监控各应用程序的状态,可以建立应用程序链表,将已启动的应用程序加入应用程序链表中,在应用程序链表中的各应用程序能够相互广播自己的状态消息。在应用程序链表中的应用程序监测到其他应用程序的状态消息时,可根据该其他应用程序的状态消息来改变自己的运行状态。即当有新的从应用程序启动时,当前前台的从应用程序自动切换至后台,若当前前台没有运行从应用程序,则主界面应用程序自动切换至后台,无需设计专门的消息转发机制,也无需用户做任何操作。

在上述任一技术方案中,优选的,在有新的从应用程序启动时,向所述应用程序链表中的各应用程序广播启动状态消息;在处于前台焦点状态的应用程序接收到所述启动状态消息时,从前台切换至后台。

在有新的从应用程序启动时,向应用程序链表中的应用程序广播启动状态消息,应用程序链表中的应用程序有的可能处于前台焦点状态,有的可能在后台,处于前台焦点状态的应用程序在知道有新的应用程序启动时,则自动将自己切换到后台,无需用户手动进行切换,减少了用户的操作。

在上述任一技术方案中,优选的,在所述主界面应用程序接收到连续的多个从应用程序的启动状态消息时,所述主界面应用程序向所述连续的多个从应用程序中,除最新启动的从应用程序之外的其他从应用程序,发送暂停状态消息;所述除最新启动的从应用程序之外的其他从应用程序在接收到所述暂停状态消息之后,将本程序切换为暂停状态。

在TV系统运行过程中,HomeUI可能会连续收到不同应用程序A和B发来的消息,此时,HomeUI就需要判断这些消息,例如A要启动,B也要启动,由于不能同时显示A和B,这时HomeUI就需要向A发送pause命令,使B处于显示状态。

在上述任一技术方案中,优选的,在所述应用程序链表中的任一从应用程序退出或隐藏时,广播退出状态消息;在处于后台状态的主界面应用程序或其他从应用程序在接收到所述退出状态消息后,根据各自的启动记录确定是否从后台切换至前台,其中所述启动记录记录应用程序之间的启动顺序关系。

在另一种场景中,在应用程序链表中的应用程序由于用户的操作而退出或隐藏时,其也向应用程序链表中的其他应用程序广播其退出的状态消息,主界面应用程序和其他已启动的从应用程序需根据之前的启动记录来确定自己是否需要显示在前台,处于焦点状态,同样不需要用户做任何动作就能够完成焦点切换。

在上述任一技术方案中,优选的,在所述主界面应用程序或所述其他从应用程序根据各自的启动记录,确定退出或隐藏的从应用程序由本程序启动时,所述主界面应用程序或所述其他从应用程序从后台切换至前台。

只有处于焦点的应用程序才能响应遥控器事件。例如主界面应用程序为C,当前从应用程序B在后台运行,从应用程序A处于焦点状态。当用户要求A关闭时,按Exit按键退出A,此时A在退出之前会广播A-stoped消息,然后A就退出应用程序链表了。此时只有B、C可以接收到A的退出消息。B、C接收到A退出的状态消息后,根据启动记录来确定是否改变自己的运行状态,此时分为两种情况:

1.假设 C启动了A,那么在A退出时自然就返回到了C,C处于前台焦点状态;

2.假设C启动了B,B启动了A,B在启动A时,会在自己的进程空间中记录了启动A的标志,A退出,B就会重新显示;C会在自己的程序中记录当前应用程序的启动列表,例如C启动了B,B启动了A,它的内存中就会记录[B,A]。当收到A的退出消息时,C会知道B应该处于显示状态,于是C不需要显示自己。这样,就能够避免应用程序之间的响应混乱,也减少了用户的操作。

根据本发明的应用程序控制方法,不需要设计单独的消息转发模块,应用程序状态消息以广播形式发出,每一个应用程序都可以收到该消息并且判断是否需要处理该消息。可以方便的管理系统中应用程序的运行状态,针对不同状态控制应用程序的显示与隐藏,以此为基础实现界面友好的应用程序控制系统,对于用户来说,操作更加便捷,使用更加人性化。

下面结合图2和图3进行一步说明根据本发明的应用程序控制方法。

如图2所示,创建一个应用程序链表,将系统中所有应用程序添加到该应用程序链表中,每一个应用程序都可以向应用程序链表中的应用程序组广播应用程序状态消息;每一个应用程序都可以获取该消息,判断是否需要处理该消息。由于使用了双向链表结构,因此链表中的节点可以快速的插入和删除,也就是说可以快速的注册应用程序,也可以快速的删除应用程序,在查找应用程序时,也可以进行前后双向快速遍历查找。

在图2中,当前,该应用程序链表中有四个应用应用程序,每个应用程序可向其他应用程序广播本程序的运行状态的消息以及接收其他应用程序广播的消息,是否响应接收到的消息,在于该消息中是否包含本程序的名称。

图2所示的应用程序链表封装了不同软件系统的消息处理机制(例如基于芯片厂商开发的软件平台系统,这些软件系统中可能会对应用程序的运行做一些消息管理,但因平台差异不相互通用),然后建立应用程序的Shutdown、stop、pause、resume状态控制接口,各接口定义如下描述,应用程序通过该接口,可以向系统发送对应的状态消息,也可以收到其他应用程序发送来的状态消息。同时利用这些消息接口,可将应用程序的管理做闭环处理,不受芯片厂商软件平台系统的消息影响,实现一个相对独立的应用程序管理和控制机制。

状态控制接口如下:

Pause状态控制接口:应用程序需要暂停时,做一些状态保存动作,当Resume的时候可以继续Pause之前的状态;

Resume状态控制接口:当应用程序暂停后,会保存一些运行时的数据信息,当需要重新运行时,在Resume接口动作中可以重新恢复这些运行是数据;

Stop状态控制接口:应用程序要停止运行时,在这个接口动作中,可以保存一些运行时数据,以及释放占用的系统资源;

Shutdown状态控制接口:强制应用程序退出。

如图2所示,通过链表结构,将所有应用程序链接成应用程序队列。当应用程序启动时,将应用程序注册到该链表队列中,从而实现应用程序的状态消息可以在该队列中进行广播。应用程序1可以理解为链表的头,应用程序4可以理解为链表的尾,当有应用程序2退出时,应用程序1的下一个应用就会变成应用程序3,应用程序3的前一个就会变成应用程序1;当有应用程序5启动时,应用程序4的下一个应用就会变成应用程序5,应用程序1的前一个应用就会变成应用程序5。

应用程序链表中的任一应用程序通过其状态接口可向应用程序链表中的其他应用程序广播本程序的状态消息或接收来自其他应用程序的广播消息,形成了消息广播机制。利用上面应用程序链表中的消息广播机制,通过UI工具设计一个GUI应用程序(即主界面应用程序)来统一组织显示系统中的其他应用程序(即从应用程序),并且通过判断消息状态,实现对其他应用程序的焦点控制。

举例说明,在应用程序A正在运行时,应用程序B被启动,应用程序B被加入应用程序链表中,应用程序B向应用程序链表中的其他应用程序广播了B-Started消息,应用程序A收到该消息后,判断出其不能与应用程序B同时显示,于是A就隐藏或者退出本程序,并向应用程序链表广播退出消息。

又例如,主界面应用程序A正在运行,在接收到用户的操作指令后需要启动应用程序B,于是主界面应用程序A向应用程序链表中的应用程序广播start B的消息,如果应用程序B已在应用程序链表中,则应用程序B在接收到该消息后,发现消息有中本程序的名称,立即响应该消息。应用程序B就被显示出来。同时应用程序B向外广播B-started消息,此时如果主界面应用程序A接收到该B-started消息后,判断不能其与应用程序B同时显示,则应用程序A就会隐藏或者退出本程序。

由于用户的操作,将处于焦点状态的B被关闭时,B向外广播退出消息,已启动的应用程序在接收到该退出消息后,根据记录的启动顺序判断是否要显示本程序。

假设A启动C,C启动B,则当C接收到B的退出消息之后,根据启动记录知道应该显示自己,于是将C切换至前台焦点状态,A虽然也能够收到B的退出消息,但由于A启动C,因此知道自己不能切换至前台焦点状态,这样就能够避免A与C之间的切换冲突。如图3A所示,302是主界面应用程序,该应用程序需要有交互化的UI,即电视机中的HomeUI,作为其他应用程序(称之为从应用程序)的启动入口。该其他应用程序即如304所示的应用程序(包括播放器、浏览器、电子书和词典)。用户可在HomeUI进行选择启动从应用程序,在启动浏览器时,主界面应用程序根据配置文件的程序路径,广播启动浏览器的消息,浏览器在接收到该启动消息后启动。

如图3B所示,主界面应用程序(HomeUI)300上有两个从应用程序,分别是应用程序A和应用程序B,当用户利用遥控器在HomeUI上选择启动应用程序A时,主界面应用程序向外广播启动应用程序A的消息并隐藏本程序,应用程序A接收到该消息之后,判断该消息中包括自己的名称,因此响应该消息,进入前台被显示,并向外广播其显示消息(其他应用程序例如应用程序B也能接收到该消息,但由于该消息与应用程序B不相关,因此应用程序B没有响应该消息)。主界面应用程序300接收到该消息之后,判断其不能与应用程序A同时显示,于是隐藏本程序。当应用程序A退出时,其也向外广播其退出消息,主界面应用程序300接收到该消息之后,显示本程序,主界面应用程序300处于前端的焦点状态,可以响应遥控器等控制设备的指令,与用户进行交互。

若在应用程序A退出时,应用程序B处于后台暂停状态,则当应用程序B接收到应用程序A退出的消息时,显示本程序,并向外广播其显示的消息,主界面应用程序300在接收到应用程序B显示的消息时,判断其不能与应用程序B同时显示,于是主界面应用程序300继续运行在后台等待其他应用程序的消息。

因此,主界面应用程序可以启动其他应用程序,然后将自己隐藏,并且当主界面应用程序收到其他应用程序的stop消息后,又可以将自己显示。这样就保证了从HomeUI启动的应用程序退出后,电视又可以返回到HomeUI上,减少了用户的操作步骤,提升了用户体验。

需说明的是,在本发明中,当应用程序A处于前台运行状态时,它只需要关心是否收到了pause、stop和shutdown这些控制消息,在设计TV系统时,不会有多个应用程序同时向同一个应用程序发送两种不同的控制消息,并且消息接收有先后顺序,先收到的消息会被先处理。

本发明还提供了应用上述任一实施例中所述描述的应用程序控制方法的终端,该终端可以是基于LINUX系统的电视机。

以上结合附图详细说明了根据本发明的应用程序管理和控制方案,考虑到在基于Linux的TV系统中,没有相应的应用程序管理机制,所有应用程序都是单任务独占式运行,各应用程序之间的交互性差,同时LINUX系统本身具有的广播消息也仅限于一些系统消息。应用程序之间缺乏交互,用户操作较为繁琐,因此本发明设计了一种通用的应用程序控制方法,每个应用程序具有相应的状态接口,应用程序之间可通过状态接口进行消息接收和广播,实现应用程序之间的消息交互,各应用程序根据其他应用程序广播的状态消息来确定是否改变本程序的运行状态,从而完成应用程序的管理与控制,从而免去了用户繁琐的操作,提升了用户体验。

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

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