CN103744727A - 一种启动服务的方法、装置和智能设备 - Google Patents
一种启动服务的方法、装置和智能设备 Download PDFInfo
- Publication number
- CN103744727A CN103744727A CN201410020591.9A CN201410020591A CN103744727A CN 103744727 A CN103744727 A CN 103744727A CN 201410020591 A CN201410020591 A CN 201410020591A CN 103744727 A CN103744727 A CN 103744727A
- Authority
- CN
- China
- Prior art keywords
- application layer
- service
- layer services
- counter
- described application
- 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
Images
Abstract
本发明适用于操作系统技术领域,提供了一种启动服务的方法,所述方法包括:在创建应用层服务时,为所述应用层服务创建对应的底层核心服务;通过所述底层核心服务监控所述应用层服务的运行状态;当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。在本发明中,根据Android系统框架的特点,应用层服务位于Android系统的应用程序层,底层核心服务是指native服务,位于Android系统的runtime层,native服务不会被Android系统回收,通过native服务监控应用层服务,实现了应用层服务在异常情况下停止运行后,能够自动重启,恢复正常运行。
Description
技术领域
本发明属于操作系统技术领域,尤其涉及一种启动服务的方法、装置和智能设备。
背景技术
Android系统因其开放性,允许任何设备厂商成为其开发而得到了迅速的发展,目前已成为主流的操作系统之一,被广泛应用于手机、平板电脑、电视和相机等设备上。
在Android系统中,当前台运行的应用程序占用内存较多,剩余的可分配内存不足时,Android系统会启动回收进程low memory killer关闭在后台运行的优先级较低的应用层服务,以保证有足够的内存分配给前台的应用程序。此外,应用层服务在运行过程中出现异常时,也会被Android系统关闭。上述情况发生后,被关闭的应用层服务不能自动恢复正常运行,并且不易被用户发现,导致用户得不到应有的服务。
发明内容
本发明的目的在于提供一种启动服务的方法,旨在解决应用层服务在异常情况下被Android系统回收后不能自动恢复正常运行的问题。
本发明是这样实现的,一种启动服务的方法,包括:
在创建应用层服务时,为所述应用层服务创建对应的底层核心服务;
通过底层核心服务监控所述应用层服务的运行状态;
当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。
本发明的另一目的在于提供一种启动服务的装置,包括:
服务创建单元,用于为应用层服务创建对应的底层核心服务;
服务监控单元,用于通过所述底层核心服务监控所述应用层服务的运行状态;
服务重启单元,用于当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。
本发明的另一目的在于提供一种启动服务的智能设备,包括如上所述的启动服务的装置。
在本发明中,为应用层服务创建对应的底层核心服务,通过底层核心服务监控该应用层服务的运行状态,当底层核心服务检测到应用层服务处于停止运行状态时,重启该应用层服务。根据Android系统框架的特点,应用层服务位于Android系统的应用程序层,底层核心服务是指本地服务(native服务),位于Android系统的运行时层(runtime层),native服务不会被Android系统回收,通过native服务监控应用层服务,实现了应用层服务在异常情况下停止运行后,能够自动重启,恢复正常运行。
附图说明
图1是本发明实施例一提供的启动服务的方法的实现流程图;
图2是本发明实施例一提供的启动服务的方法中步骤S102的具体实现流程图;
图3是本发明实施例一提供的启动服务的方法中步骤S103的具体实现流程图;
图4是本发明实施例一提供的启动服务的方法中native服务监控应用层服务的示意图;
图5是本发明实施例二提供的启动服务的方法的流程示意图;
图6是本发明实施例三提供的启动服务的装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,为应用层服务创建对应的底层核心服务,通过底层核心服务监控该应用层服务的运行状态,当底层核心服务检测到应用层服务处于停止运行状态时,重启该应用层服务。根据Android系统框架的特点,应用层服务位于Android系统的应用程序层,底层核心服务是指native服务,位于Android系统的runtime层,native服务不会被Android系统回收,通过native服务监控应用层服务,实现了应用层服务在异常情况下停止运行后,能够自动重启,恢复正常运行。
在后续实施例中,底层核心服务以Android系统的native服务为例,对启动服务的方法、装置和智能设备进行阐述。
图1示出了本发明实施例一提供的启动服务的方法的实现流程,详述如下:
在步骤S101中,在创建应用层服务时,为所述应用层服务创建对应的native服务。
Android系统采用分层架构的思想,其中,应用程序层包含一些预置的应用程序,如电子邮件、日历和浏览器等,还包括开发者利用JAVA语言设计的JAVA应用程序,应用层服务位于应用程序层;runtime层包含大多数JAVA应用程序所需要调用的功能函数,完成对服务生命周期的管理,是JAVA应用程序使用底层驱动或者硬件设备的重要通道,native服务位于runtime层,采用C++语音编写。根据Android系统框架各层的特点,native服务不会被Android系统回收,而应用层服务在系统异常情况下,会被Android系统回收。
在本发明实施例中,对于一些比较重要的应用层服务,在其创建的同时创建与其对应的native服务。应用层服务通过JAVA本地调用接口(Java NativeInterface,JNI)启动该native服务,JNI是JAVA平台的一部分,它允许JAVA代码和采用其他语言编写的代码交互。
在步骤S102中,通过所述native服务监控所述应用层服务的运行状态。
在本发明实施例中,应用层服务的运行状态分为正常运行状态和停止运行状态,所述应用层服务包含第一计数器,所述第一计数器以第一预设时长为间隔进行计数,第一计数器也可称为心跳计数器,如果心跳计数器的值不断增加,表明该应用层服务处于正常运行状态,如果心跳计数器的值不改变,表明该应用层服务处于停止运行状态。
具体地,应用层服务创建一个线程,该线程中定义一个变量作为心跳计数器,该变量读取系统时间,以第一预设时长为间隔进行计数,第一预设时长可根据实际需要定义,如1秒等。
native服务可通过监控心跳计数器的值来监控应用层服务的运行状态,作为本发明的一个实施例,如图2所示,步骤S102具体包括:
在S201中,以第二预设时长为间隔通过所述native服务读取所述第一计数器的值,所述第二预设时长大于等于所述第一预设时长。
native服务以第二预设时长为间隔读取第一计数器的值,第二预设时长可根据实际需要自由定义。在S202中,如果相邻两次读取的所述第一计数器的值相等,判定所述应用层服务处于停止运行状态。
在本发明实施例中,相邻两次读取到的第一计数器的值不变,则说明应用层服务处于停止运行状态;如果相邻两次读取的所述第一计数器的值不相等,说明第一计数器在工作,判定所述应用层服务处于正常运行状态。
为了准确判断应用层服务的运行状态,所述第二预设时长大于等于所述第一预设时长,即native服务读取第一计数器的值的时间间隔必须大于等于第一计数器的计数间隔,以避免误判。如第一预设时长为1秒时,第二预设时长应大于等于1秒,若第二预设时长小于1秒,则很有可能出现第一计数器的值还未更新,native服务已多次读取的情况,造成误判。
在步骤S103中,当所述native服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。
native服务检测到应用层服务处于停止运行状态时,可立刻重启该应用层服务,具体为通过调用应用层服务的StartService函数来进行重启。为了提高判断的准确性,也可在多次检测到应用层服务处于停止运行状态后,再重启该应用层服务。
作为本发明的一个实施例,对于多次检测再重启的情况,所述native服务包含第二计数器,如图3所示,步骤S103具体为:
在S301中,通过所述第二计数器对所述native服务检测到所述应用层服务处于停止运行状态的次数进行计数。
如图4所示,native服务监控对应的应用层服务的第一计数器,根据第一计数器的值判断该应用层服务的运行状态,native服务中的第二计数器对检测到所述应用层服务处于停止运行状态的次数进行计数。
在S302中,当所述第二计数器的值达到预设阈值时,重启所述应用层服务。
在本发明实施例中,预设阈值可根据实际情况确定,在此不做限定。
图5从计算机程序设计的角度示出了本发明实施例二提供的启动服务的方法的流程示意图。分别与实施例一中的S101、S102、S103及其细化步骤对应,在创建应用层服务时,创建与其对应的native服务501,启动应用层服务502后,应用层服务中的第一计数器以第一预设时长计数503,native服务以第二预设时长读取第一计数器的值504,判断相邻两次读取的第一计数器的值是否相等505,如果相同,第二计数器加1操作506,判断第二计数器的值是否达到预设阈值507,如果达到预设阈值,判定应用层服务处于停止运行状态,将第一计数器和第二计数器清零508,重启应用层服务。
在本发明实施例中,为应用层服务创建对应的native服务,通过native服务监控该应用层服务的运行状态,当native服务检测到应用层服务处于停止运行状态时,重启该应用层服务。应用层服务位于Android系统的应用程序层,native服务位于Android系统的runtime层,根据Android系统框架的特点,native服务不会被Android系统回收,通过native服务监控应用层服务,实现了应用层服务在异常情况下停止运行后,能够自动重启,恢复正常运行。
图6示出了本发明实施例三提供的启动服务的装置的结构框图,该装置可以位于手机、平板电脑、电视和相机等基于Android系统的终端设备中,用于执行图1至图5所描述的启动服务的方法。为了便于说明,仅示出了与本实施例相关的部分。
参照图6,该装置包括:
服务创建单元61,在创建应用层服务时,为应用层服务创建对应的native服务。
服务监控单元62,通过native服务监控应用层服务的运行状态。
服务重启单元63,当native服务检测到应用层服务处于停止运行状态时,重启应用层服务。
可选地,应用层服务包含第一计数器,第一计数器以第一预设时长为间隔进行计数。服务监控单元62包括:
读取子单元,以第二预设时长为间隔通过native服务读取第一计数器的值,第二预设时长大于等于第一预设时长。
判定子单元,如果相邻两次读取的第一计数器的值相等,判定应用层服务处于停止运行状态。
可选地,判断子单元具体还用于如果相邻两次读取的第一计数器的值不相等,判定应用层服务处于正常运行状态。
可选地,native服务包含第二计数器,服务重启单元63包括:
计数子单元,通过第二计数器对native服务检测到应用层服务处于停止运行状态的次数进行计数。
重启子单元,当第二计数器的值达到预设阈值时,重启应用层服务。
上述实施例三所描述的启动服务的装置可位于智能设备中,用于执行实施例一所描述的启动服务的方法。
在本发明实施例中,服务创建单元61为应用层服务创建对应的native服务,服务监控单元62通过native服务监控该应用层服务的运行状态,当native服务检测到应用层服务处于停止运行状态时,服务重启单元63重启该应用层服务。应用层服务位于Android系统的应用程序层,native服务位于Android系统的runtime层,根据Android系统框架的特点,native服务不会被Android系统回收,通过native服务监控应用层服务,实现了应用层服务在异常情况下停止运行后,能够自动重启,恢复正常运行。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种启动服务的方法,其特征在于,所述方法包括:
在创建应用层服务时,为所述应用层服务创建对应的底层核心服务;
通过底层核心服务监控所述应用层服务的运行状态;
当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。
2.如权利要求1所述的方法,其特征在于,所述应用层服务包含第一计数器,所述第一计数器以第一预设时长为间隔进行计数,
所述通过底层核心服务监控所述应用层服务的运行状态包括:
以第二预设时长为间隔通过所述底层核心服务读取所述第一计数器的值,所述第二预设时长大于等于所述第一预设时长;
如果相邻两次读取的所述第一计数器的值相等,判定所述应用层服务处于停止运行状态。
3.如权利要求2所述的方法,其特征在于,所述通过所述底层核心服务监控所述应用层服务的运行状态还包括:
如果相邻两次读取的所述第一计数器的值不相等,判定所述应用层服务处于正常运行状态。
4.如权利要求2所述的方法,其特征在于,所述底层核心服务包含第二计数器,
所述当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务包括:
通过所述第二计数器对所述底层核心服务检测到所述应用层服务处于停止运行状态的次数进行计数;
当所述第二计数器的值达到预设阈值时,重启所述应用层服务。
5.一种启动服务的装置,其特征在于,所述装置包括:
服务创建单元,用于在创建应用层服务时,为所述应用层服务创建对应的底层核心服务;
服务监控单元,用于通过底层核心服务监控所述应用层服务的运行状态;
服务重启单元,用于当所述底层核心服务检测到所述应用层服务处于停止运行状态时,重启所述应用层服务。
6.如权利要求5所述的装置,其特征在于,所述应用层服务包含第一计数器,所述第一计数器以第一预设时长为间隔进行计数,
所述服务监控单元包括:
读取子单元,用于以第二预设时长为间隔通过所述底层核心服务读取所述第一计数器的值,所述第二预设时长大于等于所述第一预设时长;
判定子单元,用于如果相邻两次读取的所述第一计数器的值相等,判定所述应用层服务处于停止运行状态。
7.如权利要求6所述的装置,其特征在于,所述判断子单元具体还用于如果相邻两次读取的所述第一计数器的值不相等,判定所述应用层服务处于正常运行状态。
8.如权利要求6所述的装置,其特征在于,所述底层核心服务包含第二计数器,
所述服务重启单元包括:
计数子单元,用于通过所述第二计数器对所述底层核心服务检测到所述应用层服务处于停止运行状态的次数进行计数;
重启子单元,用于当所述第二计数器的值达到预设阈值时,重启所述应用层服务。
9.一种智能设备,其特征在于,所述智能设备包括如权利要求5~8任一项所述的启动服务的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410020591.9A CN103744727A (zh) | 2014-01-16 | 2014-01-16 | 一种启动服务的方法、装置和智能设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410020591.9A CN103744727A (zh) | 2014-01-16 | 2014-01-16 | 一种启动服务的方法、装置和智能设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103744727A true CN103744727A (zh) | 2014-04-23 |
Family
ID=50501747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410020591.9A Pending CN103744727A (zh) | 2014-01-16 | 2014-01-16 | 一种启动服务的方法、装置和智能设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103744727A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572264A (zh) * | 2014-12-31 | 2015-04-29 | 广东欧珀移动通信有限公司 | 控制应用运行的方法和移动终端设备 |
CN104598809A (zh) * | 2015-02-13 | 2015-05-06 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN105099812A (zh) * | 2015-06-12 | 2015-11-25 | 深圳市美贝壳科技有限公司 | Android系统的通信服务监控方法及其系统 |
CN105302611A (zh) * | 2015-11-13 | 2016-02-03 | 中标软件有限公司 | 一种Linux下的启动计算机系统的方法及系统 |
CN105354131A (zh) * | 2015-12-11 | 2016-02-24 | 北京慧眼智行科技有限公司 | 一种服务程序运行的监控方法及装置 |
CN105511721A (zh) * | 2015-12-02 | 2016-04-20 | 小米科技有限责任公司 | 页面显示方法及装置 |
CN105573833A (zh) * | 2015-12-14 | 2016-05-11 | 北京奇虎科技有限公司 | 处理客户端应用的方法、装置与移动终端 |
CN107145390A (zh) * | 2017-04-10 | 2017-09-08 | 北京智能管家科技有限公司 | 安卓服务生命周期管理方法、服务管理对象及安卓系统 |
CN107517308A (zh) * | 2017-08-07 | 2017-12-26 | 惠州Tcl移动通信有限公司 | 移动终端应用程序异常的检测方法、储存装置及移动终端 |
CN107765922A (zh) * | 2017-10-31 | 2018-03-06 | 努比亚技术有限公司 | 卡屏检测与解决方法、移动终端及计算机可读存储介质 |
CN107783844A (zh) * | 2017-10-13 | 2018-03-09 | 锐捷网络股份有限公司 | 一种计算机程序运行异常检测方法、装置和介质 |
CN110399179A (zh) * | 2019-07-29 | 2019-11-01 | 深圳市元征科技股份有限公司 | 嵌入式设备服务管理方法、系统及电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1547125A (zh) * | 2003-12-12 | 2004-11-17 | 中兴通讯股份有限公司 | 一种基于共享内存的看门狗实现方法 |
CN1904852A (zh) * | 2006-08-01 | 2007-01-31 | 西安西电捷通无线网络通信有限公司 | 一种计算机应用程序的监控及异常处理方法 |
US20100088707A1 (en) * | 2008-10-02 | 2010-04-08 | Dell Products L. P. | Mechanism for Application Management During Server Power Changes |
EP2450794A1 (en) * | 2010-10-22 | 2012-05-09 | France Telecom | Method for allowing distributed running of an application and related device and inference engine |
CN102880817A (zh) * | 2012-08-20 | 2013-01-16 | 福建升腾资讯有限公司 | 计算机软件产品运行保护方法 |
-
2014
- 2014-01-16 CN CN201410020591.9A patent/CN103744727A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1547125A (zh) * | 2003-12-12 | 2004-11-17 | 中兴通讯股份有限公司 | 一种基于共享内存的看门狗实现方法 |
CN1904852A (zh) * | 2006-08-01 | 2007-01-31 | 西安西电捷通无线网络通信有限公司 | 一种计算机应用程序的监控及异常处理方法 |
US20100088707A1 (en) * | 2008-10-02 | 2010-04-08 | Dell Products L. P. | Mechanism for Application Management During Server Power Changes |
EP2450794A1 (en) * | 2010-10-22 | 2012-05-09 | France Telecom | Method for allowing distributed running of an application and related device and inference engine |
CN102880817A (zh) * | 2012-08-20 | 2013-01-16 | 福建升腾资讯有限公司 | 计算机软件产品运行保护方法 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572264A (zh) * | 2014-12-31 | 2015-04-29 | 广东欧珀移动通信有限公司 | 控制应用运行的方法和移动终端设备 |
CN104598809A (zh) * | 2015-02-13 | 2015-05-06 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN104598809B (zh) * | 2015-02-13 | 2017-04-19 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN105099812A (zh) * | 2015-06-12 | 2015-11-25 | 深圳市美贝壳科技有限公司 | Android系统的通信服务监控方法及其系统 |
CN105302611A (zh) * | 2015-11-13 | 2016-02-03 | 中标软件有限公司 | 一种Linux下的启动计算机系统的方法及系统 |
CN105302611B (zh) * | 2015-11-13 | 2019-10-25 | 中标软件有限公司 | 一种Linux下的启动计算机系统的方法及系统 |
CN105511721B (zh) * | 2015-12-02 | 2018-12-25 | 小米科技有限责任公司 | 页面显示方法及装置 |
CN105511721A (zh) * | 2015-12-02 | 2016-04-20 | 小米科技有限责任公司 | 页面显示方法及装置 |
CN105354131A (zh) * | 2015-12-11 | 2016-02-24 | 北京慧眼智行科技有限公司 | 一种服务程序运行的监控方法及装置 |
CN105573833A (zh) * | 2015-12-14 | 2016-05-11 | 北京奇虎科技有限公司 | 处理客户端应用的方法、装置与移动终端 |
CN107145390A (zh) * | 2017-04-10 | 2017-09-08 | 北京智能管家科技有限公司 | 安卓服务生命周期管理方法、服务管理对象及安卓系统 |
CN107145390B (zh) * | 2017-04-10 | 2019-11-19 | 北京儒博科技有限公司 | 安卓服务生命周期管理方法、服务管理对象设备及安卓系统 |
CN107517308A (zh) * | 2017-08-07 | 2017-12-26 | 惠州Tcl移动通信有限公司 | 移动终端应用程序异常的检测方法、储存装置及移动终端 |
CN107783844A (zh) * | 2017-10-13 | 2018-03-09 | 锐捷网络股份有限公司 | 一种计算机程序运行异常检测方法、装置和介质 |
CN107765922A (zh) * | 2017-10-31 | 2018-03-06 | 努比亚技术有限公司 | 卡屏检测与解决方法、移动终端及计算机可读存储介质 |
CN107765922B (zh) * | 2017-10-31 | 2021-08-10 | 努比亚技术有限公司 | 卡屏检测与解决方法、移动终端及计算机可读存储介质 |
CN110399179A (zh) * | 2019-07-29 | 2019-11-01 | 深圳市元征科技股份有限公司 | 嵌入式设备服务管理方法、系统及电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103744727A (zh) | 一种启动服务的方法、装置和智能设备 | |
US9319822B2 (en) | Over-the-air update method for continuous delta of an Android operating system of a handheld device | |
WO2017084293A1 (zh) | 应用程序关闭方法、装置及电子设备 | |
US10470133B2 (en) | Electronic device and method for controlling application and component | |
CN105676987A (zh) | 关闭移动终端后台应用的方法、装置及移动终端 | |
CN104503828A (zh) | 一种进程管理方法及终端 | |
CN105242973A (zh) | 一种安卓系统的内存优化方法 | |
CN107615250B (zh) | 一种针对应用的处理方法、装置及智能终端 | |
CN104281479A (zh) | 一种固件升级方法及装置 | |
CN105388991A (zh) | 定时唤醒处理系统及方法 | |
CN108959064B (zh) | 自动化测试的弹窗处理方法及装置 | |
CN111258921A (zh) | 垃圾内存回收方法及装置、电子设备、存储介质 | |
WO2016153646A1 (en) | Shared resource access control method and apparatus | |
CN103444236A (zh) | 管理入口应用程序 | |
CN115185777A (zh) | 一种异常检测方法、装置、可读存储介质以及电子设备 | |
CN110851294B (zh) | 一种程序运行崩溃补救的方法及装置 | |
CN104809013A (zh) | 一种嵌入式系统启动方法和装置 | |
CN105354127A (zh) | 基于云管理平台的监控方法 | |
CN103873516A (zh) | 提高云计算资源池中物理服务器使用率的ha方法和系统 | |
CN109918276B (zh) | 基于app应用程序的曝光埋点处理方法及相关设备 | |
CN106482742A (zh) | 计步数据的获取方法及装置 | |
CN107391174A (zh) | 一种系统在线升级的控制方法及控制装置 | |
CN106326049B (zh) | 一种故障定位方法及终端 | |
TWI566086B (zh) | 識別電力狀態改變之技術 | |
CN103777933A (zh) | 显示进程信息的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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: 20140423 |