一种启动服务的方法、装置和智能设备的制作方法

文档序号:6535924阅读:148来源:国知局
一种启动服务的方法、装置和智能设备的制作方法
【专利摘要】本发明适用于操作系统【技术领域】,提供了一种启动服务的方法,所述方法包括:在创建应用层服务时,为所述应用层服务创建对应的底层核心服务;通过所述底层核心服务监控所述应用层服务的运行状态;当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。在本发明中,根据Android系统框架的特点,应用层服务位于Android系统的应用程序层,底层核心服务是指native服务,位于Android系统的runtime层,native服务不会被Android系统回收,通过native服务监控应用层服务,实现了应用层服务在异常情况下停止运行后,能够自动重启,恢复正常运行。
【专利说明】一种启动服务的方法、装置和智能设备
【技术领域】
[0001]本发明属于操作系统【技术领域】,尤其涉及一种启动服务的方法、装置和智能设备。【背景技术】
[0002]Android系统因其开放性,允许任何设备厂商成为其开发而得到了迅速的发展,目前已成为主流的操作系统之一,被广泛应用于手机、平板电脑、电视和相机等设备上。
[0003]在Andro i d系统中,当前台运行的应用程序占用内存较多,剩余的可分配内存不足时,Android系统会启动回收进程low memory killer关闭在后台运行的优先级较低的应用层服务,以保证有足够的内存分配给前台的应用程序。此外,应用层服务在运行过程中出现异常时,也会被Android系统关闭。上述情况发生后,被关闭的应用层服务不能自动恢复正常运行,并且不易被用户发现,导致用户得不到应有的服务。

【发明内容】

[0004]本发明的目的在于提供一种启动服务的方法,旨在解决应用层服务在异常情况下被Andrο i d系统回收后不能自动恢复正常运行的问题。
[0005]本发明是这样实现的,一种启动服务的方法,包括:
[0006]在创建应用层服务时,为所述应用层服务创建对应的底层核心服务;
[0007]通过底层核心服务监控所述应用层服务的运行状态;
[0008]当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。
[0009]本发明的另一目的在于提供一种启动服务的装置,包括:
[0010]服务创建单元,用于为应用层服务创建对应的底层核心服务;
[0011]服务监控单元,用于通过所述底层核心服务监控所述应用层服务的运行状态;
[0012]服务重启单元,用于当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。
[0013]本发明的另一目的在于提供一种启动服务的智能设备,包括如上所述的启动服务的装置。
[0014]在本发明中,为应用层服务创建对应的底层核心服务,通过底层核心服务监控该应用层服务的运行状态,当底层核心服务检测到应用层服务处于停止运行状态时,重启该应用层服务。根据Android系统框架的特点,应用层服务位于Android系统的应用程序层,底层核心服务是指本地服务(native服务),位于Android系统的运行时层(runtime层),native服务不会被Android系统回收,通过native服务监控应用层服务,实现了应用层服务在异常情况下停止运行后,能够自动重启,恢复正常运行。
【专利附图】

【附图说明】
[0015]图1是本发明实施例一提供的启动服务的方法的实现流程图;[0016]图2是本发明实施例一提供的启动服务的方法中步骤S102的具体实现流程图;
[0017]图3是本发明实施例一提供的启动服务的方法中步骤S103的具体实现流程图;
[0018]图4是本发明实施例一提供的启动服务的方法中native服务监控应用层服务的示意图;
[0019]图5是本发明实施例二提供的启动服务的方法的流程示意图;
[0020]图6是本发明实施例三提供的启动服务的装置的结构框图。
【具体实施方式】
[0021]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0022]在本发明实施例中,为应用层服务创建对应的底层核心服务,通过底层核心服务监控该应用层服务的运行状态,当底层核心服务检测到应用层服务处于停止运行状态时,重启该应用层服务。根据Android系统框架的特点,应用层服务位于Android系统的应用程序层,底层核心服务是指native服务,位于Android系统的runtime层,native服务不会被Android系统回收,通过native服务监控应用层服务,实现了应用层服务在异常情况下停止运行后,能够自动重启,恢复正常运行。
[0023]在后续实施例中,底层核心服务以Android系统的native服务为例,对启动服务的方法、装置和智能设备进行阐述。
[0024]图1示出了本发明实施例一提供的启动服务的方法的实现流程,详述如下:
[0025]在步骤SlOl中,在创建应用层服务时,为所述应用层服务创建对应的native服务。
[0026]Android系统采用分层架构的思想,其中,应用程序层包含一些预置的应用程序,如电子邮件、日历和浏览器等,还包括开发者利用JAVA语言设计的JAVA应用程序,应用层服务位于应用程序层runtime层包含大多数JAVA应用程序所需要调用的功能函数,完成对服务生命周期的管理,是JAVA应用程序使用底层驱动或者硬件设备的重要通道,native服务位于runtime层,采用C++语音编写。根据Android系统框架各层的特点,native服务不会被Android系统回收,而应用层服务在系统异常情况下,会被Android系统回收。
[0027]在本发明实施例中,对于一些比较重要的应用层服务,在其创建的同时创建与其对应的native服务。应用层服务通过JAVA本地调用接口(Java Native Interface, JNI)启动该native服务,JNI是JAVA平台的一部分,它允许JAVA代码和采用其他语言编写的代码交互。
[0028]在步骤S102中,通过所述native服务监控所述应用层服务的运行状态。
[0029]在本发明实施例中,应用层服务的运行状态分为正常运行状态和停止运行状态,所述应用层服务包含第一计数器,所述第一计数器以第一预设时长为间隔进行计数,第一计数器也可称为心跳计数器,如果心跳计数器的值不断增加,表明该应用层服务处于正常运行状态,如果心跳计数器的值不改变,表明该应用层服务处于停止运行状态。
[0030]具体地,应用层服务创建一个线程,该线程中定义一个变量作为心跳计数器,该变量读取系统时间,以第一预设时长为间隔进行计数,第一预设时长可根据实际需要定义,如I秒等。
[0031]native服务可通过监控心跳计数器的值来监控应用层服务的运行状态,作为本发明的一个实施例,如图2所示,步骤S102具体包括:
[0032]在S201中,以第二预设时长为间隔通过所述native服务读取所述第一计数器的值,所述第二预设时长大于等于所述第一预设时长。
[0033]native服务以第二预设时长为间隔读取第一计数器的值,第二预设时长可根据实际需要自由定义。在S202中,如果相邻两次读取的所述第一计数器的值相等,判定所述应用层服务处于停止运行状态。
[0034]在本发明实施例中,相邻两次读取到的第一计数器的值不变,则说明应用层服务处于停止运行状态;如果相邻两次读取的所述第一计数器的值不相等,说明第一计数器在工作,判定所述应用层服务处于正常运行状态。
[0035]为了准确判断应用层服务的运行状态,所述第二预设时长大于等于所述第一预设时长,即native服务读取第一计数器的值的时间间隔必须大于等于第一计数器的计数间隔,以避免误判。如第一预设时长为I秒时,第二预设时长应大于等于I秒,若第二预设时长小于I秒,则很有可能出现第一计数器的值还未更新,native服务已多次读取的情况,造成误判。
[0036]在步骤S103中,当所述native服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。
[0037]native服务检测到应用层服务处于停止运行状态时,可立刻重启该应用层服务,具体为通过调用应用层服务的StartService函数来进行重启。为了提高判断的准确性,也可在多次检测到应用层服务处于停止运行状态后,再重启该应用层服务。
[0038]作为本发明的一个实施例,对于多次检测再重启的情况,所述native服务包含第二计数器,如图3所示,步骤S103具体为:
[0039]在S301中,通过所述第二计数器对所述native服务检测到所述应用层服务处于停止运行状态的次数进行计数。
[0040]如图4所示,native服务监控对应的应用层服务的第一计数器,根据第一计数器的值判断该应用层服务的运行状态,native服务中的第二计数器对检测到所述应用层服务处于停止运行状态的次数进行计数。
[0041]在S302中,当所述第二计数器的值达到预设阈值时,重启所述应用层服务。
[0042]在本发明实施例中,预设阈值可根据实际情况确定,在此不做限定。
[0043]图5从计算机程序设计的角度示出了本发明实施例二提供的启动服务的方法的流程示意图。分别与实施例一中的S101、S102、S103及其细化步骤对应,在创建应用层服务时,创建与其对应的native服务501,启动应用层服务502后,应用层服务中的第一计数器以第一预设时长计数503,native服务以第二预设时长读取第一计数器的值504,判断相邻两次读取的第一计数器的值是否相等505,如果相同,第二计数器加I操作506,判断第二计数器的值是否达到预设阈值507,如果达到预设阈值,判定应用层服务处于停止运行状态,将第一计数器和第二计数器清零508,重启应用层服务。
[0044]在本发明实施例中,为应用层服务创建对应的native服务,通过native服务监控该应用层服务的运行状态,当native服务检测到应用层服务处于停止运行状态时,重启该应用层服务。应用层服务位于Android系统的应用程序层,native服务位于Android系统的runtime层,根据Android系统框架的特点,native服务不会被Android系统回收,通过native服务监控应用层服务,实现了应用层服务在异常情况下停止运行后,能够自动重启,恢复正常运行。
[0045]图6示出了本发明实施例三提供的启动服务的装置的结构框图,该装置可以位于手机、平板电脑、电视和相机等基于Android系统的终端设备中,用于执行图1至图5所描述的启动服务的方法。为了便于说明,仅示出了与本实施例相关的部分。
[0046]参照图6,该装置包括:
[0047]服务创建单元61,在创建应用层服务时,为应用层服务创建对应的native服务。
[0048]服务监控单元62,通过native服务监控应用层服务的运行状态。
[0049]服务重启单元63,当native服务检测到应用层服务处于停止运行状态时,重启应用层服务。
[0050]可选地,应用层服务包含第一计数器,第一计数器以第一预设时长为间隔进行计数。服务监控单元62包括:
[0051]读取子单元,以第二预设时长为间隔通过native服务读取第一计数器的值,第二预设时长大于等于第一预设时长。
[0052]判定子单元,如果相邻两次读取的第一计数器的值相等,判定应用层服务处于停止运行状态。
[0053]可选地,判断子单元具体还用于如果相邻两次读取的第一计数器的值不相等,判定应用层服务处于正常运行状态。
[0054]可选地,native服务包含第二计数器,服务重启单元63包括:
[0055]计数子单元,通过第二计数器对native服务检测到应用层服务处于停止运行状态的次数进行计数。
[0056]重启子单元,当第二计数器的值达到预设阈值时,重启应用层服务。
[0057]上述实施例三所描述的启动服务的装置可位于智能设备中,用于执行实施例一所描述的启动服务的方法。
[0058]在本发明实施例中,服务创建单元61为应用层服务创建对应的native服务,服务监控单元62通过native服务监控该应用层服务的运行状态,当native服务检测到应用层服务处于停止运行状态时,服务重启单元63重启该应用层服务。应用层服务位于Android系统的应用程序层,native服务位于Android系统的runtime层,根据Android系统框架的特点,native服务不会被Android系统回收,通过native服务监控应用层服务,实现了应用层服务在异常情况下停止运行后,能够自动重启,恢复正常运行。
[0059]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种启动服务的方法,其特征在于,所述方法包括: 在创建应用层服务时,为所述应用层服务创建对应的底层核心服务; 通过底层核心服务监控所述应用层服务的运行状态; 当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。
2.如权利要求1所述的方法,其特征在于,所述应用层服务包含第一计数器,所述第一计数器以第一预设时长为间隔进行计数, 所述通过底层核心服务监控所述应用层服务的运行状态包括: 以第二预设时长为间隔通过所述底层核心服务读取所述第一计数器的值,所述第二预设时长大于等于所述第一预设时长; 如果相邻两次读取的所述第一计数器的值相等,判定所述应用层服务处于停止运行状态。
3.如权利要求2所述的方法,其特征在于,所述通过所述底层核心服务监控所述应用层服务的运行状态还包括: 如果相邻两次读取的所述第一计数器的值不相等,判定所述应用层服务处于正常运行状态。
4.如权利要求2所述的方法,其特征在于,所述底层核心服务包含第二计数器, 所述当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务包括: 通过所述第二计数器对所述底层核心服务检测到所述应用层服务处于停止运行状态的次数进行计数; 当所述第二计数器的值达到预设阈值时,重启所述应用层服务。
5.一种启动服务的装置,其特征在于,所述装置包括: 服务创建单元,用于在创建应用层服务时,为所述应用层服务创建对应的底层核心服务; 服务监控单元,用于通过底层核心服务监控所述应用层服务的运行状态; 服务重启单元,用于当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。
6.如权利要求5所述的装置,其特征在于,所述应用层服务包含第一计数器,所述第一计数器以第一预设时长为间隔进行计数, 所述服务监控单元包括: 读取子单元,用于以第二预设时长为间隔通过所述底层核心服务读取所述第一计数器的值,所述第二预设时长大于等于所述第一预设时长; 判定子单元,用于如果相邻两次读取的所述第一计数器的值相等,判定所述应用层服务处于停止运行状态。
7.如权利要求6所述的装置,其特征在于,所述判断子单元具体还用于如果相邻两次读取的所述第一计数器的值不相等,判定所述应用层服务处于正常运行状态。
8.如权利要求6所述的装置,其特征在于,所述底层核心服务包含第二计数器, 所述服务重启单元包括:计数子单元,用于通过所述第二计数器对所述底层核心服务检测到所述应用层服务处于停止运行状态的次数进行计数; 重启子单元,用于当所述第二计数器的值达到预设阈值时,重启所述应用层服务。
9.一种智能设备,其特征在于,所述智能设备包括如权利要求5~8任一项所述的启动服务的装置。
【文档编号】G06F9/48GK103744727SQ201410020591
【公开日】2014年4月23日 申请日期:2014年1月16日 优先权日:2014年1月16日
【发明者】刘军辉 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1