CN106371977A - 一种检测当前应用是否处于前台的方法 - Google Patents
一种检测当前应用是否处于前台的方法 Download PDFInfo
- Publication number
- CN106371977A CN106371977A CN201610800511.0A CN201610800511A CN106371977A CN 106371977 A CN106371977 A CN 106371977A CN 201610800511 A CN201610800511 A CN 201610800511A CN 106371977 A CN106371977 A CN 106371977A
- Authority
- CN
- China
- Prior art keywords
- application program
- counting module
- counting
- foreground
- interface
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
一种检测当前应用是否处于前台的方法是利用计数模块对启动后应用程序的界面操作执行计数处理,并根据计数判断应用程序是前台还是后台运行,具体为应用程序的界面创建完成并在屏幕可见时计数模块计数加1,应用程序的界面在屏幕不可见且未被销毁时计数模块计数减1;所述计数模块的计数值为0时,应用程序处于后台运行,所述计数模块的计数值不等于0时,应用程序处于前台运行。本发明所述技术方案的有益效果在于:相比与传统检测方法,本发明所述方法具有逻辑结构简单的特点,其有效减少了系统开销,提高了系统及软件运行速率。
Description
技术领域
本发明涉及信息处理技术领域,尤其涉及一种检测当前应用是否处于前台的方法。
背景技术
目前在安卓应用开发技术中,很多应用都需要判断应用是处于前台还是后台,来满足业务逻辑需要,例如即时通讯应用需要判断当前是否处于后台运行状态,如果处于后台需要把接收到的消息显示到通知栏中,如果从后台切换到前台需要把消息显示在前台中,还有一些视频播放应用,当切换到后台的时候需要自动暂停,切换到前台的时候需要自动播放,这些都需要判断应用是否处于前台和后台,而且该操作是非常频繁的。
对于这种情况,安卓系统提供相应的API来供安卓开发人员进行判断和操作。
当前安卓系统检测当前应用是否处于前台还是后台的具体做法如下:
1.通过安卓系统提供的API获取到所有的正在运行的应用。
2.把所有的正在运行的应用中的每一个的应用名称获取到。
3.通过安卓系统API获取当前应用的应用名称。
4.和之前获取的所有应用名称进行一一对比。
5.如果两个应用的名称是一样的则继续判断,如果不一样则继续判断下一个。
6.当两个应用名称一样时,继续判断当前进程的标记是否处于前后台的状态。
7.得出结果。
该方法每次判断都需要获取所有正在运行的应用,极大的增加了系统的开销,当系统开启的应用程序较多时,系统的运行速率会有所下降,特别是对于使用一段时间后的智能手机,由于系统各种临时文件较多,当系统在判断应用程序使用状况时,系统会存在反应迟缓甚至是死机的情况。
发明内容
本发明针对现有技术的不足,提出的一种检测当前应用是否处于前台的方法,该方法能有效提高系统的运行速度和效率。
所述的一种检测当前应用是否处于前台的方法具体为:
利用计数模块对启动后应用程序的界面操作执行监控处理;所述计数模块包括计数模块包括当前应用名称及数值信息,所述计数模块初始值为零;所述监控处理是指对界面操作进行计数处理;
应用程序的界面创建完成并在屏幕可见时计数模块计数加1,应用程序的界面在屏幕不可见且未被销毁时计数模块计数减1;
判定计数模块的计数值以确定调用程序处于前台或后台。
进一步的, 所述计数模块的计数值为0时,应用程序处于后台运行,所述计数模块的计数值不等于0时,应用程序处于前台运行。
进一步的,应用程序对自身界面调用进行监控,并将监控结果返回给计数模块,计数模块根据返回结果进行计数调整。
本发明所述技术方案的有益效果在于:相比与传统检测方法,本发明所述方法具有逻辑结构简单的特点,其有效减少了系统开销,提高了系统及软件运行速率。
具体实施方式
为了全面理解本发明,在以下详细描述中提到了诸多细节,但本领域技术人员应该理解,本发明可以无需这些具体细节而实现。在其实施例中,不详细描述公知的方法、过程和组件,以免不必要地使实施例模糊。
本发明所述的一种检测当前应用是否处于前台的方法是利用计数模块对启动后应用程序的界面操作执行计数处理,并根据计数判断应用程序是前台还是后台运行,具体为应用程序的界面创建完成并在屏幕可见时计数模块计数加1,应用程序的界面在屏幕不可见且未被销毁时计数模块计数减1;所述计数模块的计数值为0时,应用程序处于后台运行,所述计数模块的计数值不等于0时,应用程序处于前台运行。
本发明利用安卓应用程序界面从创建到销毁的固有特点而进行设计的,安卓应用程序界面固有的调用顺序是:onCreate()至onStart()至onResume()至onPause()至onStop()至onDestroy()。
当安卓应用程序启动并创建应用时应用程序本身调用onCreate(),当应用程序界面创建完成并且在屏幕可见的时候调用onStart(),当应用程序界面在屏幕可见并且可以和用户交互的时候调用onResume(),当应用程序界面在屏幕可见但是不可以和用户交互的时候调用onPause(),当应用程序界面在屏幕已经看不到该页面的时候调用onStop(),当应用程序界面被销毁的时候调用onDestroy()。
根据安卓应用程序界面函数调用特点,结合本发明所述技术方案,本发明的详细实施方式为:
每个应用程序界面的Onstart()和Onstop()维护一个整型变量appCount,在A界面在启动时,onStart()把变量appCount+1,在A界面退出时,onStop()把变量appCount-1;B界面在启动时,同样在onStart()中把变量appCount+1,在B界面退出时,在onStop()中把变量appCount-1;
然后,判断变量appCount是否等于0就可以得到应用是否处于前台,当appCount等于0时,当前应用就处于后台运行中,当appCount不等于0时,当前应用就处于前台运行中。
通常,由于一个应用中有多个界面,每个界面分别对一个整型变量appCount进行处理会相对增加系统开销,因此,可以考虑统一进行处理,其处理方式采用应用程序对自身界面调用进行监控,并将监控结果返回给计数模块,计数模块根据返回结果进行计数调整。即通过代表应用本身的全局类Application监听到应用程序本身所有相关界面,具体实现方式为:
创建一个类BaseApplication继承代表应用本身的全局类Application;
在BaseApplication中的onCreate()中使用registerActivityLifecylcleCallbacks方法注册监听所有的activity类的回调方法onActivityStopped(Activity activity)和onActivityStarted(Activity activity);
在onActivityStarted(Activity activity)方法中把appCount+1,在onActivityStopped(Activity activity)方法中把appCount-1;
判断变量appCount是否等于0就可以得到应用是否处于前台,当appCount等于0的话当前应用就处于后台运行中,当appCount不等于0时,当前应用就处于前台运行中。
利用本发明所述技术方案,在技术实现上,相对于传统实现方式,一方面可以有效的减少代码,实现更加简洁和简单;另一方面,可以有效提高软件运行速度和效率,提高系统的运行速度。
以上对本发明所提供的一种检测当前应用是否处于前台的方法进行了详细介绍,本文中应用了实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (3)
1.一种检测当前应用是否处于前台的方法,具体步骤为 :
利用计数模块对启动后应用程序的界面操作执行监控处理;所述计数模块包括计数模块包括当前应用名称及数值信息,所述计数模块初始值为零;所述监控处理是指对界面操作进行计数处理;
应用程序的界面创建完成并在屏幕可见时计数模块计数加1,应用程序的界面在屏幕不可见且未被销毁时计数模块计数减1;
判定计数模块的计数值以确定调用程序处于前台或后台。
2.如权利要求1所述的一种检测当前应用是否处于前台的方法,其特征在于,所述计数模块的计数值为0时,应用程序处于后台运行,所述计数模块的计数值不等于0时,应用程序处于前台运行。
3.如权利要求1所述的一种检测当前应用是否处于前台的方法,其特征在于,应用程序对自身界面调用进行监控,并将监控结果返回给计数模块,计数模块根据返回结果进行计数调整。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610800511.0A CN106371977A (zh) | 2016-09-02 | 2016-09-02 | 一种检测当前应用是否处于前台的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610800511.0A CN106371977A (zh) | 2016-09-02 | 2016-09-02 | 一种检测当前应用是否处于前台的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106371977A true CN106371977A (zh) | 2017-02-01 |
Family
ID=57898982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610800511.0A Pending CN106371977A (zh) | 2016-09-02 | 2016-09-02 | 一种检测当前应用是否处于前台的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106371977A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391199A (zh) * | 2017-07-27 | 2017-11-24 | 珠海市魅族科技有限公司 | 应用启动方法及装置、终端和计算机可读存储介质 |
CN107517357A (zh) * | 2017-08-31 | 2017-12-26 | 四川长虹电器股份有限公司 | 电子猫眼设备的视频通话的设计方法 |
CN108363529A (zh) * | 2018-03-20 | 2018-08-03 | 青岛海信移动通信技术股份有限公司 | 应用程序界面的前台运行时间的确定方法及装置 |
CN111382025A (zh) * | 2018-12-28 | 2020-07-07 | 北京微播视界科技有限公司 | 应用程序的前后台状态的判断方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130052965A1 (en) * | 2011-08-29 | 2013-02-28 | Qualcomm Incorporated | Systems and methods for monitoring of background application events |
CN105022955A (zh) * | 2014-04-22 | 2015-11-04 | 腾讯科技(深圳)有限公司 | 一种应用程序的锁定方法及移动终端 |
CN105183457A (zh) * | 2015-08-13 | 2015-12-23 | 北京金山安全软件有限公司 | 一种监听界面生命周期回调的方法及装置 |
-
2016
- 2016-09-02 CN CN201610800511.0A patent/CN106371977A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130052965A1 (en) * | 2011-08-29 | 2013-02-28 | Qualcomm Incorporated | Systems and methods for monitoring of background application events |
CN105022955A (zh) * | 2014-04-22 | 2015-11-04 | 腾讯科技(深圳)有限公司 | 一种应用程序的锁定方法及移动终端 |
CN105183457A (zh) * | 2015-08-13 | 2015-12-23 | 北京金山安全软件有限公司 | 一种监听界面生命周期回调的方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391199A (zh) * | 2017-07-27 | 2017-11-24 | 珠海市魅族科技有限公司 | 应用启动方法及装置、终端和计算机可读存储介质 |
CN107517357A (zh) * | 2017-08-31 | 2017-12-26 | 四川长虹电器股份有限公司 | 电子猫眼设备的视频通话的设计方法 |
CN108363529A (zh) * | 2018-03-20 | 2018-08-03 | 青岛海信移动通信技术股份有限公司 | 应用程序界面的前台运行时间的确定方法及装置 |
CN111382025A (zh) * | 2018-12-28 | 2020-07-07 | 北京微播视界科技有限公司 | 应用程序的前后台状态的判断方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106371977A (zh) | 一种检测当前应用是否处于前台的方法 | |
US10838838B2 (en) | Method and apparatus for dealing with abnormality of application program and storage medium | |
CN109918141B (zh) | 线程执行方法、装置、终端及存储介质 | |
CN106662907B (zh) | 基于终端的唤醒锁控制方法、装置及终端 | |
CN109614433B (zh) | 业务系统间数据血缘的识别方法、装置、设备及存储介质 | |
CN101604224A (zh) | 一种应用程序的功能图标显示方法、系统及移动终端 | |
CN103019661A (zh) | 一种事件提示的方法及系统 | |
CN104992116B (zh) | 基于intent sniffer的监测方法及系统 | |
US20230409391A1 (en) | Thread priority adjusting method, terminal, and computer-readable storage medium | |
WO2019223095A1 (zh) | 监控进程运行的方法、终端设备及计算机可读存储介质 | |
CN106650447A (zh) | 一种防御PowerShell恶意代码执行的方法及系统 | |
CN105468438B (zh) | 在应用程序中进行进程回收处理的方法及装置 | |
CN105573842B (zh) | 在应用程序中进行进程回收处理的方法及装置 | |
CN109784054B (zh) | 行为堆栈信息获取方法及装置 | |
CN104050044A (zh) | 一种终端、一种释放内存的方法及装置 | |
CN105589546A (zh) | 一种信息检测方法及装置 | |
CN106557693A (zh) | 一种恶意Hook行为检测方法及系统 | |
CN102122249B (zh) | 启动java应用的方法及装置 | |
CN114609892A (zh) | 一种多任务控制系统快速冗余方法 | |
CN104572036B (zh) | 事件的处理方法及装置 | |
CN113687942A (zh) | 检测方法、装置及电子设备 | |
CN116360930A (zh) | 一种任务处理的方法及装置 | |
CN106991017B (zh) | 事件处理方法及装置 | |
CN110874277B (zh) | 一种电子红包处理方法、电子红包处理装置及移动终端 | |
US10599845B2 (en) | Malicious code deactivating apparatus and method of operating the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170201 |
|
WD01 | Invention patent application deemed withdrawn after publication |