CN109151582A - 基于Linux机顶盒的多应用管理方法、装置及终端 - Google Patents
基于Linux机顶盒的多应用管理方法、装置及终端 Download PDFInfo
- Publication number
- CN109151582A CN109151582A CN201810933294.1A CN201810933294A CN109151582A CN 109151582 A CN109151582 A CN 109151582A CN 201810933294 A CN201810933294 A CN 201810933294A CN 109151582 A CN109151582 A CN 109151582A
- Authority
- CN
- China
- Prior art keywords
- program
- foreground
- main
- management
- storehouse
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种基于Linux机顶盒的多应用管理方法、装置及终端。本申请通过程序管理堆栈先进后出的操作原理,将位于程序管理堆栈栈顶的程序确认为当前的前台程序,便于系统资源的合理分配;通过将前台程序的Z序值配置为程序管理堆栈的高度值的方式,能够确保前台程序的Z序值为当前所有活动程序中的最大Z序值,从而确保前台程序显示在屏幕的最前方。当位于程序管理堆栈底层的应用程序切换为前台程序时,只需将该应用程序重新入栈即可获得最大Z序值,无需进行程序的关闭和开启,从而实现多个应用程序之间的快速切换。此外,本方案由主程序负责多应用程序的管理工作,无需依赖第三方程序库,能够实现管理程序的快速集成和移植。
Description
技术领域
本公开涉及机顶盒技术领域,尤其涉及一种基于Linux机顶盒的多应用管理方法、装置及终端。
背景技术
随着业务需求的多样化,目前机顶盒产品多支持多进程模式,用户在使用机顶盒时能够同时启动多个应用程序。例如,用户在启动用于实现机顶盒基本业务的主应用程序以外,还可以同时打开浏览器等从应用程序,以浏览网页信息、股票信息等。由于多应用程序共享内存资源和显示资源,因此,为了避免多应用程序之间发生冲突,对多应用程序的有效管理是十分必要的。
目前,机顶盒对于应用程序缺乏统一管理,容易造成资源分配混乱、图层切换繁琐等缺陷。例如,现有机顶盒中,通常由各个应用程序自行定义Z序的大小,并按照预设的固定的Z序值实现界面显示。Z序值越大,对应程序窗口的层叠顺序越靠前,比如,程序1的Z序为1,程序2的Z序为2,程序3的Z序为3,则程序1可以切换至程序2或程序3,程序2只能切换至程序3,而程序3则无法切换至其他程序,在此场景下,如需显示程序1或程序2,则必须先行关闭程序3,当需要显示程序3时,再重新启动程序3,导致图层切换耗时长,灵活性差,容易造成多个应用程序显示层次的混乱。
另外,多应用程序的开发常基于方案商平台提供的应用框架,多应用程序的管理需要依赖应用框架中的第三方程序库,使得多应用管理程序在平台间的移植难度较大。例如,嵌入式设备常见的图形系统框架DirectFB中带有窗口管理器default和unique,如需移植窗口管理器,则除了跨平台移植directfb源码包以外,还需要移植fusion、flux、tslib等第三方程序库,不利于管理程序的快速集成和移植。
发明内容
本发明实施例中提供了一种基于Linux机顶盒的多应用管理方法、装置及终端,以解决现有技术中应用程序缺乏统一管理的问题。
第一方面,本发明提供了一种基于Linux机顶盒的多应用管理方法,包括:
主程序创建一程序管理堆栈,并将位于所述程序管理堆栈栈顶的程序确认为前台程序,所述程序管理堆栈用于记录从程序的启动顺序;
所述主程序监控所述从程序的运行状态;
当接收到前台程序切换指令后,所述主程序将处于活动状态的目标程序的程序信息更新至所述程序管理堆栈的栈顶;
所述主程序将系统资源分配给所述目标程序,并将所述目标程序的Z序值配置为所述程序管理堆栈的高度值。
第二方面,本发明提供了一种基于Linux机顶盒的多应用管理装置,其特征在于,包括:处理器、存储器和通信接口,所述处理器、所述存储器和所述通信接口通信总线相连;
所述通信接口,用于接收和发送信号;
所述存储器,用于存储程序代码;
所述处理器,用于读取所述存储器中存储的程序代码,并执行如上所述的方法。
第三方面,本发明还提供了一种机顶盒,其特征在于,包括上述的基于Linux机顶盒的多应用管理装置。
本申请的有益效果如下:
本申请提供了一种基于Linux机顶盒的多应用管理方法、装置及终端。本申请将主程序同时配置为应用管理程序,主程序通过与从程序之间的信息交互,监控各个从程序的运行状态,并通过创建一个程序管理堆栈,来记录各个程序的启动和回退顺序、配置各个应用程序的Z序值,以便确认系统资源的分配对象以及确保前台程序的正常显示。本申请通过程序管理堆栈先进后出的操作原理,将位于程序管理堆栈栈顶的程序确认为当前的前台程序,便于系统资源的合理分配。另外,由于程序管理堆栈按照启动的先后顺序记录了所有已启动的应用程序,因此,通过将前台程序的Z序值配置为程序管理堆栈的高度值的方式,能够确保前台程序的Z序值为当前所有活动程序中的最大Z序值,从而确保前台程序能够显示在屏幕的最前方。当位于程序管理堆栈底层的应用程序切换为前台程序时,只需将该应用程序重新入栈即可获得最大Z序值,无需进行程序的关闭和开启,从而实现多个应用程序之间的快速切换。此外,本方案由主程序负责多应用程序的管理工作,无需依赖第三方程序库,能够实现管理程序的快速集成和移植。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种机顶盒内多个应用程序的交互图;
图2为本申请实施例提供的一种基于Linux机顶盒的多应用管理方法的流程图;
图3为本申请实施例提供的一种步骤S200的流程图;
图4为本申请实施例提供的一种步骤S300的流程图;
图5为本申请实施例提供的另一种步骤S300的流程图;
图6-1为本申请实施例提供的场景1下,程序管理堆栈的状态变化图;
图6-2为本申请实施例提供的场景1下,屏幕窗口的显示状态图;
图7-1为本申请实施例提供的场景2下,程序管理堆栈的状态变化图;
图7-2为本申请实施例提供的场景2下,屏幕窗口的显示状态图;
图8-1为本申请实施例提供的场景3下,程序管理堆栈的状态变化图;
图8-2为本申请实施例提供的场景3下,屏幕窗口的显示状态图;
图9-1为本申请实施例提供的场景4下,程序管理堆栈的状态变化图;
图9-2为本申请实施例提供的场景4下,程序管理堆栈的状态变化图;
图10-1为本申请实施例提供的场景5下,程序管理堆栈的状态变化图;
图10-2为本申请实施例提供的场景5下,程序管理堆栈的状态变化图;
图11为本申请实施例提供的另一种基于Linux机顶盒的多应用管理方法的流程图;
图12为本申请实施例提供的一种基于Linux机顶盒的多应用管理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
针对现有技术中应用程序缺乏统一管理,导致的资源分配混乱以及图层切换繁琐等缺陷,以及平台间移植性差的技术问题,本申请提供了一种基于Linux机顶盒的多应用管理方法、装置及终端。其核心思想为:将主程序同时配置为应用管理程序,主程序通过与从程序之间的信息交互,监控各个从程序的运行状态,并通过创建一个程序管理堆栈,来记录各个从程序的启动和回退顺序、配置各个应用程序的Z序值,以便确认系统资源的分配对象以及确保前台程序的正常显示。
本申请通过程序管理堆栈先进后出的操作原理,将位于程序管理堆栈栈顶的程序确认为当前的前台程序,便于系统资源的合理分配。另外,由于程序管理堆栈按照启动的先后顺序记录了所有已启动的应用程序,因此,通过将前台程序的Z序值配置为程序管理堆栈的高度值的方式,能够确保前台程序的Z序值为当前所有活动程序中的最大Z序值,从而确保前台程序能够显示在屏幕的最前方。当位于程序管理堆栈底层的应用程序切换为前台程序时,只需将该应用程序重新入栈即可获得最大Z序值,无需进行程序的关闭和开启,从而实现多个应用程序之间的快速切换。此外,本方案由主程序负责多应用程序的管理工作,无需依赖第三方程序库,能够实现管理程序的快速集成和移植。下面结合具体实施例和附图对本申请提供的方案做进一步描述。
本实施例采用Master/Slave(主/从)方式进行应用程序的管理。在Linux系统初始化完成后,默认启动一个主应用程序,同时作为应用的管理核心程序。Master程序只有一个,可启动或者关闭多个Slave程序。请参考图1,所示为本申请实施例中提供的一种机顶盒内多个应用程序的交互图。由图1可见,本实施例提供的机顶盒包括一个主程序,和多个从程序,主程序和从程序之间可通过进程间通信IPC(英文全称:Inter-ProcessCommunication)进行通讯。具体的,主程序建立一个线程,用于启动IPC服务端,并通过IPC对各个从程序的运行状态进行监控、以及进行启动程序、关闭程序、切换前台程序等指令的发送。
基于上述多个应用程序的交互关系,本申请实施例还提供了一种基于Linux机顶盒的多应用管理方法。请参考图2,所示为本申请实施例中提供的一种基于Linux机顶盒的多应用管理方法的流程图。由图2可见,本实施例提供的基于Linux机顶盒的多应用管理方法,包括如下步骤:
步骤S100:主程序创建一程序管理堆栈,并将位于所述程序管理堆栈栈顶的程序确认为前台程序。
本实施例中,根据各个程序的启动顺序,先启动的应用程序先入栈,后启动的应用程序后入栈,同时,该程序管理堆栈的操作原则为先进入栈的应用程序后出栈。也就是说,最后启动的应用程序(即用户当前操作的前台程序)位于该程序管理堆栈的栈顶,可通过对该程序管理堆栈栈顶元素的操作,实现前台程序的切换。位于所述程序管理堆栈栈顶的程序被确认为前台程序,所述程序管理堆栈用于记录从程序的启动顺序。
在前台程序切换的过程中,可以通过堆栈的PUSH操作,在栈顶加入一个元素,同时,将程序管理堆栈的高度加一;通过POP操作,在栈顶移去一个元素,同时,将程序管理堆栈的高度减一。本实施例中,程序管理堆栈内存储的元素信息为应用程序的程序识别ID,该程序识别ID与应用程序唯一对应。
步骤S200:主程序监控各个从程序的运行状态。
本实施例中,从程序的运行状态包括活动状态和非活动状态,主程序可通过从程序发送的注册信息和握手信息,来对各个从程序的运行状态进行监控,从而确定通讯和操作的对象。具体的,如果从程序处于启动状态,并且能够与主程序保持持续的通讯,则该从程序处于活动状态;如果从程序处于非启动状态,或者主程序在预设时间内未监听到该从程序的交互信息,则该从程序处于活动状态。本实施例可借助于一个活动从程序列表存储当前处于活动状态的从程序的相关信息。具体的,请参考图3,所示为本申请实施例中提供的一种步骤S200的流程图。由图3可见,步骤S200还可以包括如下步骤:
步骤S201:将各个从程序发送的注册信息存储于主程序创建的活动从程序列表中。
活动从程序列表用于记录处于活动状态的从程序,主程序在与从程序通讯之前,可通过该活动从程序列表确认该从程序是否处于可通讯的活动状态,以防主、从程序间出现通讯异常的状况。
当从程序首次启动时,可通过IPC向主程序发送一个注册信息,用以通知主程序该从程序当前处于活动状态,能够与主程序进行通讯。该注册信息携带有从程序的程序识别ID、进程PID号、跨进程通讯ID。本实施例提供的机顶盒为多进程多程序终端,每个进程分别用于运行一个应用程序,程序识别ID为程序的唯一标识,进程PID号(进程识别号,英文全称:Process Identification)为程序对应进程的唯一标识,跨进程通讯ID为从程序通过IPC发送的套接字句柄。主程序将各个从程序发送的注册信息存储于活动从程序列表中,每个从程序唯一对应一条记录信息。
步骤S202:监听所述从程序循环发送的握手信息。
步骤S203:当在预设时间内未监听到所述握手信息时,将所述活动从程序列表中相应从程序的注册信息移除。
在从程序运行期间,可能出现由于程序故障等原因意外退出的情况,导致主程序与其通讯异常,进而导致前台程序的切换和显示异常。基于以上场景,已启动的从程序可通过循环发送的一组握手信息与主程序保持通讯连接。具体的,已启动的从程序可每隔10s通过IPC向主程序发送一组程序识别ID+握手字节的数据,如果主程序在预设时间内接收到以上握手信息,则表明该从程序仍然处于活动状态,可正常通讯;如果主程序在预设时间内没有接收到以上握手信息,则表明该从程序已经死亡,需要将其从活动从程序列表中移除,以免后续主程序依据活动从程序列表判断从程序运行状态时,出现误判的情况。
步骤S300:当接收到前台程序切换指令后,所述主程序将处于活动状态的目标程序的程序信息更新至所述程序管理堆栈的栈顶。
本实施例中,触发前台程序切换的指令可以是某一程序的启动指令,也可以是某一程序的关闭指令。当启动指令作为触发前台程序切换的指令时,主程序可先通过上述活动从程序列表确认用户待操作的目标程序是否处于活动状态,如果目标程序处于活动从程序列表中,则将该目标程序的程序信息通过PUSH操作更新至程序管理堆栈的栈顶;如果目标程序不处于活动从程序列表中,则先启动目标程序,再将该目标程序的程序信息通过PUSH操作更新至程序管理堆栈的栈顶。
当关闭指令作为触发前台程序切换的指令时,同样的,主程序先确认用户待操作的目标程序处于活动状态,再将该当前前台程序的程序信息通过POP操作移除,从而将该目标程序更新至程序管理堆栈的栈顶。
另外,本实施例的步骤S300中,在主程序将处于活动状态的目标程序的程序信息更新至所述程序管理堆栈的栈顶之前,主程序还应对当前处于所述程序管理堆栈栈顶的前台程序进行相关处理,以便回收其被占用的系统资源。具体的,主程序向当前处于所述程序管理堆栈栈顶的前台程序发送切换请求,当前的前台程序在接收到所述切换请求后,释放所占用的系统资源,并设置OSD透明度等级参数等数据。当然,本申请其他实施例中,主程序也可以先将处于活动状态的目标程序的程序信息更新至所述程序管理堆栈的栈顶,并通知所述目标程序切换为前台程序,再对所述前台程序下层的从程序进行资源回收等后续处理。
步骤S400:所述主程序将系统资源分配给所述目标程序,并将所述目标程序的Z序值配置为所述程序管理堆栈的高度值。
本实施例中,前台程序可定义多种模块接口,具体的,可通过ObtainResource()模块接口获取系统资源,包括音/视频解码器、大块内存等;通过ReleaseResource()模块接口释放系统资源,前台程序切换为非前台程序时,释放已占用的系统资源;通过SetupOSD()模块接口设置图层属性,如OSD透明度、Z序等。
多程序管理功能主要体现在对各个应用程序运行状态的监控,以及前台程序发生切换时,管理程序对于前台程序所需系统资源的合理分配,前台程序的正确显示,以及,前台程序切换的流畅性等方面。本实施例通过程序管理堆栈先进后出的操作原理,将位于程序管理堆栈栈顶的程序确认为当前的前台程序,便于系统资源的合理分配。由于程序管理堆栈按照启动的先后顺序记录了所有已启动的应用程序,因此,通过将前台程序的Z序值配置为程序管理堆栈的高度值的方式,能够确保前台程序的Z序值为当前所有活动程序中的最大Z序值,从而确保前台程序能够显示在屏幕的最前方。当位于程序管理堆栈底层的应用程序切换为前台程序时,只需将该应用程序重新入栈即可获得最大Z序值,无需进行程序的关闭和开启,从而实现多个应用程序之间的快速切换。此外,本方案由主程序负责多应用程序的管理工作,无需依赖第三方程序库,能够实现管理程序的快速集成和移植。
在Linux系统初始化完成后,默认启动一个主程序,主程序为Linux系统启动的第一个应用程序,同时作为应用的管理核心程序。主程序创建一程序管理堆栈,并将其程序信息存入该程序管理堆栈,此时,主程序为机顶盒运行的前台程序,获取系统资源,主程序将其OSD(屏幕菜单式调节方式,英文全称:on-screen display)的Z序值设置为程序管理堆栈的高度,此时堆栈的高度值为1,主程序显示在屏幕的最前方。在主程序启动后,从程序的启动,以及从程序的关闭均可触发前台程序的切换操作。具体实施场景请参见下述实施例。
请参考图4,所示为本申请实施例中提供的一种步骤S300的流程图。由图4可见,步骤S300还可以包括如下步骤:
步骤S3011:当主程序接收到目标程序的启动指令时,检测所述活动从程序列表中是否包含所述目标程序,如果所述活动从程序列表中不包含所述目标程序,则执行步骤S3012;如果所述活动从程序列表中包含所述目标程序,则执行步骤S3013。
目标程序的启动指令可以是用户直接发送至主程序的启动指令,也可以用户直接发送至一级从程序的启动指令。当所述一级从程序接收到用户发送的所述二级从程序启动指令时,需要向主程序发送启动请求,以便所述主程序响应所述启动请求,启动二级从程序。一级从程序可以是二级从程序的上层程序,如需启动二级从程序,则必须先启动一级从程序。本实施例中,从程序的启动可由主程序或者其他从程序执行,从程序的关闭可由主程序或者自身执行。
步骤S3012:启动所述目标程序。
步骤S3013:将所述目标程序的程序信息更新至所述程序管理堆栈的栈顶,并通知所述目标程序切换为前台程序。
本实施例针对的是从程序的启动指令作为前台程序的切换指令的应用场景,该场景具体又包括两种情况,一种情况为需要启动的目标程序未存储于活动从程序列表中,(可能处于关闭、异常等非活动状态),此时,主程序可以先使用system、fork或exec族函数创建一个进程启动该目标程序;再对该目标程序进行入栈以及进行相关配置。另一种情况为需要启动的目标程序已经存储于活动从程序列表中,即目标程序已经处于活动状态(可能处于后台运行状态),此时,主程序直接对该目标程序进行入栈以及相关配置即可。
请参考图5,所示为本申请实施例中提供的另一种步骤S300的流程图。由图5可见,步骤S300还可以包括如下步骤:
步骤S3021:当主程序接收到第一程序的关闭指令时,关闭所述第一程序,将所述第一程序从所述程序管理堆栈中移出。所述第一程序为当前处于所述程序管理堆栈栈顶的前台程序。
步骤S3022:检测所述活动从程序列表中是否包含第二程序。所述第二程序为所述第一程序关闭后,处于所述程序管理堆栈栈顶的程序。
步骤S3023:如果所述活动从程序列表中不包含所述第二程序,则关闭所述第二程序,将所述第二程序从所述程序管理堆栈中移出。继续检测所述活动从程序列表中是否包含第三程序,所述第三程序为所述第二程序关闭后,处于所述程序管理堆栈栈顶的程序,如果所述活动从程序列表中不包含所述第三程序,则依次循环执行上述检测步骤,直到所述活动从程序列表中包含栈顶程序为止。
步骤S3024:如果所述活动从程序列表中包含所述第二程序,则通知所述第二程序切换为前台程序。
本实施例针对的是从程序的关闭指令作为前台程序的切换指令的应用场景,由于程序管理堆栈内存储的应用程序,有可能已经死亡,并被活动从程序列表移除,因此,这种情况下,该从程序则无法作为前台程序继续与主程序通讯,可借助活动从程序列表的存储信息确认从程序的活动状态。
下面结合几个具体实例,说明前台程序的切换过程,以及相应从程序在程序管理堆栈的入栈、出栈过程。
场景1:当用户通过主程序启动第一从程序时,可触发前台程序的首次切换(由主程序切换至第一从程序),此时,第一从程序入栈,并显示在屏幕最前端。程序管理堆栈的状态变化见图6-1,屏幕窗口的显示状态见图6-2。
场景2:在场景1的基础上,当用户首次启动第二从程序时,可触发前台程序的第二次切换(由第一从程序切换至第二从程序),此时,第二从程序入栈,并显示在屏幕最前端。程序管理堆栈的状态变化见图7-1,屏幕窗口的显示状态见图7-2。
场景3:在场景2的基础上,当用户再次启动第一从程序时,可触发前台程序的第三次切换(由第二从程序切换至第一从程序),此时,第一从程序入栈,并显示在屏幕最前端。程序管理堆栈的状态变化见图8-1,屏幕窗口的显示状态见图8-2。
场景4:在场景3的基础上,当用户关闭第一从程序时,可触发前台程序的第四次切换(由第一从程序切换至第二从程序),此时,第一从程序出栈,如果第二从程序仍处于活动状态,则第二从程序处于程序管理堆栈的栈顶,并显示在屏幕最前端,程序管理堆栈的状态变化见图9-1,屏幕窗口的显示状态见图9-2。
场景5:在场景3的基础上,当用户关闭第一从程序时,可触发前台程序的第四次切换(由第一从程序切换至第二从程序),此时,如果第二从程序处于非活动状态,则第二从程序出栈,由于第一从程序已经关闭,因此,第二从程序出栈后栈内的第一从程序继续出栈,主程序处于程序管理堆栈的栈顶,并显示在屏幕最前端,程序管理堆栈的状态变化见图10-1,屏幕窗口的显示状态见图10-2。
请参考图11,所示为本申请实施例中提供的另一种基于Linux机顶盒的多应用管理方法的流程图。由图11可见,所述方法还包括如下步骤:
步骤S500:主程序获取按键事件消息。
步骤S600:主程序检测所述按键事件消息是否为全局按键消息。
步骤S700:如果所述按键事件消息是全局按键消息,则主程序响应所述全局按键消息。
步骤S800:如果所述按键事件消息不是全局按键消息,则主程序将所述按键事件消息转发给所述前台程序,以便所述前台程序响应所述按键事件消息。
按键响应权是多应用管理的一个重要方面,用户发送的所有按键事件消息由主程序获取,再由主程序进行识别,并按照识别结果对按键事件消息进行分发。具体的,如果按键事件消息是全局按键消息(如遥控器电源按键消息),则主程序响应该全局按键消息。如果按键事件消息为非全局按键消息,则主程序将按键事件消息通过IPC分发至前台程序,如果前台程序为主程序,则主程序,则主程序将该发送按键事件消息给应用上层响应,如果前台程序为从程序,则主程序转发至前台的从程序,前台的从程序通过InjectKeyEvent()程序模块注入按键事件。
对应于上述多应用管理方法,本发明实施例还提供了一种基于Linux机顶盒的多应用管理装置。请参考图12,所示为本申请实施例中提供的一种基于Linux机顶盒的多应用管理装置的结构示意图。由图12可见,该多应用管理装置600,其结构可包括:至少一个处理器(processor)601、内存(memory)602、外围设备接口(peripheralinterface)603、输入/输出子系统(I/Osubsystem)604、电力线路605和通信线路606。
在图12中,箭头表示能进行计算机系统的构成要素间的通信和数据传送,且其可利用高速串行总线(high-speed serial bus)、并行总线(parallelbus)、存储区域网络(SAN,Storage Area Network)和/或其他适当的通信技术而实现。
内存602可包括操作系统612和多应用管理例程622。例如,内存602可包括高速随机存取存储器(high-speed random access memory)、磁盘、静态随机存取存储器(SPAM)、动态随机存取存储器(DRAM)、只读存储器(ROM)、闪存或非挥发性内存。内存602可存储用于操作系统612和多应用管理例程622的程序编码,也就是说可包括多应用管理装置600的动作所需的软件模块、指令集架构或其之外的多种数据。此时,处理器601或外围设备接口606等其他控制器与内存602的存取可通过处理器601进行控制。
外围设备接口603可将多应用管理装置600的输入和/或输出外围设备与处理器601和内存602相结合。并且,输入/输出子系统604可将多种输入/输出外围设备与外围设备接口606相结合。例如,输入/输出子系统604可包括显示器、打印机或根据需要用于将照相机、各种传感器等外围设备与外围设备接口603相结合的控制器。根据另一侧面,输入/输出外围也可不经过输入/输出子系统604而与外围设备接口603相结合。
电力线路605可向机顶盒终端的电路元件的全部或部分供给电力。例如,电力线路605可包括如电力管理系统、电池或交流(AC)之一个以上的电源、充电系统、电源故障检测电路(power failuredetection circuit)、电力变换器或逆变器、电力状态标记符或用于电力生成、管理、分配的任意其他电路元件。
通信线路606可利用至少一个接口与其他计算机系统进行通信,如与其它的电视终端进行通信。
处理器601通过施行存储在内存602中的软件模块或指令集架构可执行多应用管理装置600的多种功能且处理数据。也就是说,处理器601通过执行基本的算术、逻辑以及计算机系统的输入/输出演算,可构成为处理计算机程序的命令。
基于图12所示多应用管理装置,本发明实施例还提供了一种机顶盒,该机顶盒中包括图12所示的多应用管理装置
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种基于Linux机顶盒的多应用管理方法,其特征在于,包括:
主程序创建一程序管理堆栈,并将位于所述程序管理堆栈栈顶的程序确认为前台程序,所述程序管理堆栈用于记录从程序的启动顺序;
所述主程序监控所述从程序的运行状态;
当接收到前台程序切换指令后,所述主程序将处于活动状态的目标程序的程序信息更新至所述程序管理堆栈的栈顶;
所述主程序将系统资源分配给所述目标程序,并将所述目标程序的Z序值配置为所述程序管理堆栈的高度值。
2.根据权利要求1所述的方法,其特征在于,所述主程序监控所述从程序的运行状态包括:
将从程序发送的注册信息存储于主程序创建的活动从程序列表中,所述注册信息携带有所述从程序的程序识别ID、进程PID号、跨进程通讯ID;
监听所述从程序循环发送的握手信息,所述握手信息携带有所述从程序的程序识别ID;
当在预设时间内未监听到所述握手信息时,将所述活动从程序列表中相应从程序的注册信息移除。
3.根据权利要求1所述的方法,其特征在于,所述当接收到前台程序切换指令后,所述主程序将处于活动状态的目标程序的程序信息更新至所述程序管理堆栈的栈顶还包括:
当主程序接收到目标程序的启动指令时,检测所述活动从程序列表中是否包含所述目标程序;
如果所述活动从程序列表中不包含所述目标程序,则启动所述目标程序;
将所述目标程序的程序信息更新至所述程序管理堆栈的栈顶,并通知所述目标程序切换为前台程序。
4.根据权利要求3所述的方法,其特征在于,所述目标程序的启动指令为主程序接收到的目标程序的启动指令,或者一级从程序接收到的二级从程序的启动指令;
当所述一级从程序接收到用户发送的所述二级从程序启动指令时,向主程序发送启动请求,以便所述主程序响应所述启动请求。
5.根据权利要求1所述的方法,其特征在于,所述当接收到前台程序切换指令后,所述主程序将处于活动状态的目标程序的程序信息更新至所述程序管理堆栈的栈顶还包括:
当主程序接收到第一程序的关闭指令时,关闭所述第一程序,将所述第一程序从所述程序管理堆栈中移出,所述第一程序为当前处于所述程序管理堆栈栈顶的前台程序;
检测所述活动从程序列表中是否包含第二程序,所述第二程序为所述第一程序关闭后,处于所述程序管理堆栈栈顶的程序;
如果所述活动从程序列表中不包含所述第二程序,则关闭所述第二程序,将所述第二程序从所述程序管理堆栈中移出;
如果所述活动从程序列表中包含所述第二程序,则通知所述第二程序切换为前台程序。
6.根据权利要求1所述的方法,其特征在于,在主程序将处于活动状态的目标程序的程序信息更新至所述程序管理堆栈的栈顶之前,所述方法还包括:
向当前处于所述程序管理堆栈栈顶的前台程序发送切换请求;
所述前台程序在接收到所述切换请求后,释放所占用的系统资源。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
主程序获取按键事件消息;
主程序检测所述按键事件消息是否为全局按键消息;
如果所述按键事件消息是全局按键消息,则主程序响应所述全局按键消息;
如果所述按键事件消息不是全局按键消息,则主程序将所述按键事件消息转发给所述前台程序,以便所述前台程序响应所述按键事件消息。
8.一种基于Linux机顶盒的多应用管理装置,其特征在于,包括:处理器、存储器和通信接口,所述处理器、所述存储器和所述通信接口通信总线相连;
所述通信接口,用于接收和发送信号;
所述存储器,用于存储程序代码;
所述处理器,用于读取所述存储器中存储的程序代码,并执行如权利要求1至7中任一项所述的方法。
9.一种机顶盒,其特征在于,包括如权利要求8所述的基于Linux机顶盒的多应用管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810933294.1A CN109151582A (zh) | 2018-08-16 | 2018-08-16 | 基于Linux机顶盒的多应用管理方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810933294.1A CN109151582A (zh) | 2018-08-16 | 2018-08-16 | 基于Linux机顶盒的多应用管理方法、装置及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109151582A true CN109151582A (zh) | 2019-01-04 |
Family
ID=64789552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810933294.1A Pending CN109151582A (zh) | 2018-08-16 | 2018-08-16 | 基于Linux机顶盒的多应用管理方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109151582A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052058A (zh) * | 2020-08-13 | 2020-12-08 | 新智道枢(上海)科技有限公司 | 一种基于ipc多应用融合屏幕的技术 |
CN113031921A (zh) * | 2020-12-31 | 2021-06-25 | 南京汉隆科技有限公司 | 一种网络话机应用软件的开发框架及实现方法 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101184300A (zh) * | 2007-12-06 | 2008-05-21 | 中兴通讯股份有限公司 | 一种手机图形系统中的窗口管理方法 |
CN101410803A (zh) * | 2006-01-24 | 2009-04-15 | 思杰系统有限公司 | 用于提供对计算环境的访问的方法和系统 |
CN101465995A (zh) * | 2008-11-14 | 2009-06-24 | 深圳创维数字技术股份有限公司 | 数字电视机顶盒、用于窗口布局的管理设备与方法 |
CN102063302A (zh) * | 2010-12-20 | 2011-05-18 | 北京握奇数据系统有限公司 | 窗口管理方法、系统及终端 |
CN103491434A (zh) * | 2013-09-05 | 2014-01-01 | 广东九联科技股份有限公司 | 一种基于安卓的机顶盒的应用程序切换方法 |
CN103747338A (zh) * | 2013-12-24 | 2014-04-23 | 广东九联科技股份有限公司 | 一种基于android系统机顶盒的应用切换方法 |
CN104077016A (zh) * | 2013-03-29 | 2014-10-01 | 中兴通讯股份有限公司 | 一种多窗口显示和切换方法及装置 |
CN104202647A (zh) * | 2014-08-08 | 2014-12-10 | 深圳市同洲电子股份有限公司 | 一种窗口的显示方法及设备 |
CN105760038A (zh) * | 2014-12-16 | 2016-07-13 | 阿里巴巴集团控股有限公司 | 一种多窗口显示方法及装置 |
CN105786301A (zh) * | 2014-12-23 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 多窗口系统下切换显示对象的方法及其装置 |
CN106101751A (zh) * | 2016-06-07 | 2016-11-09 | 西安诺瓦电子科技有限公司 | 基于Android操作系统的播放器以及嵌入式播放盒 |
CN107888979A (zh) * | 2017-11-23 | 2018-04-06 | 青岛海信电器股份有限公司 | 基于Linux电视的图像显示方法及装置 |
-
2018
- 2018-08-16 CN CN201810933294.1A patent/CN109151582A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101410803A (zh) * | 2006-01-24 | 2009-04-15 | 思杰系统有限公司 | 用于提供对计算环境的访问的方法和系统 |
CN101184300A (zh) * | 2007-12-06 | 2008-05-21 | 中兴通讯股份有限公司 | 一种手机图形系统中的窗口管理方法 |
CN101465995A (zh) * | 2008-11-14 | 2009-06-24 | 深圳创维数字技术股份有限公司 | 数字电视机顶盒、用于窗口布局的管理设备与方法 |
CN102063302A (zh) * | 2010-12-20 | 2011-05-18 | 北京握奇数据系统有限公司 | 窗口管理方法、系统及终端 |
CN104077016A (zh) * | 2013-03-29 | 2014-10-01 | 中兴通讯股份有限公司 | 一种多窗口显示和切换方法及装置 |
CN103491434A (zh) * | 2013-09-05 | 2014-01-01 | 广东九联科技股份有限公司 | 一种基于安卓的机顶盒的应用程序切换方法 |
CN103747338A (zh) * | 2013-12-24 | 2014-04-23 | 广东九联科技股份有限公司 | 一种基于android系统机顶盒的应用切换方法 |
CN104202647A (zh) * | 2014-08-08 | 2014-12-10 | 深圳市同洲电子股份有限公司 | 一种窗口的显示方法及设备 |
CN105760038A (zh) * | 2014-12-16 | 2016-07-13 | 阿里巴巴集团控股有限公司 | 一种多窗口显示方法及装置 |
CN105786301A (zh) * | 2014-12-23 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 多窗口系统下切换显示对象的方法及其装置 |
CN106101751A (zh) * | 2016-06-07 | 2016-11-09 | 西安诺瓦电子科技有限公司 | 基于Android操作系统的播放器以及嵌入式播放盒 |
CN107888979A (zh) * | 2017-11-23 | 2018-04-06 | 青岛海信电器股份有限公司 | 基于Linux电视的图像显示方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052058A (zh) * | 2020-08-13 | 2020-12-08 | 新智道枢(上海)科技有限公司 | 一种基于ipc多应用融合屏幕的技术 |
CN113031921A (zh) * | 2020-12-31 | 2021-06-25 | 南京汉隆科技有限公司 | 一种网络话机应用软件的开发框架及实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109980776B (zh) | 一种智能配变系统和该系统的应用方法 | |
CN103793246A (zh) | 协调摄像头资源的方法及系统 | |
CN103645924A (zh) | 嵌入式设备程序参数管理方法及装置 | |
CN107229646A (zh) | 数据集群的部署方法、装置及系统 | |
CN109151582A (zh) | 基于Linux机顶盒的多应用管理方法、装置及终端 | |
CN108712501A (zh) | 信息的发送方法、装置、计算设备以及存储介质 | |
CN103530193A (zh) | 用于调节应用进程的方法和设备 | |
CN104363486B (zh) | 一种组合电视的usb共享方法及组合电视 | |
CN109032888A (zh) | 一种服务器启动过程故障检测方法、装置及受控终端 | |
CN104486394A (zh) | 不中断业务软件升级方法及装置 | |
CN103729240A (zh) | 应用程序控制方法 | |
CN106170763A (zh) | 一种软件校验方法和装置 | |
CN109144532A (zh) | 升级方法及装置 | |
CN110895469A (zh) | 双机热备系统的升级方法、装置及电子设备和存储介质 | |
CN105049936B (zh) | 一种开关机的方法及装置 | |
CN106028142B (zh) | 一种播放设备的升级控制方法和装置 | |
CN106161086B (zh) | 主控板重启的控制方法及装置 | |
EP4170485A1 (en) | Disaster recovery method and apparatus for middleware of paas, disaster recovery device, and computer-readable storage medium | |
CN107147698B (zh) | 智能开关的远程控制系统、方法和装置 | |
CN110707824B (zh) | 一种测控装置的冗余配置方法、装置、设备和存储介质 | |
CN105487921B (zh) | 一种任务栈管理方法及装置 | |
CN105933136B (zh) | 一种资源调度方法及系统 | |
CN114257614B (zh) | 一种多业务模式的医院大数据平台系统及资源调度方法 | |
CN104469278A (zh) | 一种监控系统升级方法及装置 | |
CN110198481A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190104 |