Android终端应用程序功耗监控的方法和装置的制作方法

文档序号:6432121阅读:142来源:国知局
专利名称:Android终端应用程序功耗监控的方法和装置的制作方法
技术领域
本发明涉及到,特别涉及到一种Android终端应用程序功耗监控的方法和装置。
背景技术
功耗一直是智能移动设备所重点关心的关键技术指标,功耗的好坏直接决定了一款智能移动产品的核心竞争力。功耗的优化可以从硬件、驱动、系统软件和应用程序等方面进行。Android终端产品出厂前,设备制造商会在硬件、驱动和系统软件层面对功耗进行优化,做到性能和功率消耗的最优平衡,但对于应用程序的功耗无法控制,用户经常发现Android终端在安装大量应用程序后,待机时间急剧下降。最新的数据显示Android的免费应用数量已经达到13. 4万。免费应用程序的增长虽然可以让用户的体验得到极大的丰富和扩展,但同时,由于某些不被监督和管理的免费软件在编程开发过程中,只考虑其功能而不考虑对软硬件资源的节约利用,使得这些免费应用程序在运行时造成用户的Android终端功耗急剧恶化,比如很多免费游戏代码的执行效率很低,用户在玩这些游戏时,CPU资源长期处于 100%运转,无法进入idle节能状态,还有一些软件为了防止掉线,会长期持有Android系统的睡眠锁,导致系统无法在系统闲置时进入睡眠模式,或者还有一些应用程序在用户并不知情的时候访问WIFI、BT和3G等无线网络,使功耗较高的射频模块频繁处于高负荷状态,上述各种情况都会急剧恶化Android终端功耗从而缩短整机的电池待机时间。

发明内容
本发明的主要目的为提供一种Android终端应用程序功耗监控的方法和装置,解决Android终端由于应用程序的行为而增大功耗的问题。本发明提出一种Android终端应用程序功耗监控的方法,包括通过预设的监控点捕获应用程序的行为;收集所述应用程序的行为的功耗数据;根据所述功耗数据,分析所述应用程序的功耗,并将分析结果显示于Android终端。优选地,在执行所述将分析结果显示于Android终端之后,还包括对满足预设的告警规则的应用程序,发出告警。优选地,在执行所述通过预设的监控点捕获应用程序的行为之前,还包括设置捕获应用程序行为的监控点。优选地,所述根据功耗数据,分析应用程序的功耗,包括对所述功耗数据进行排序和检索;统计所述排序和检索后的功耗数据。优选地,所述统计排序和检索后的功耗数据具体为
通过用户界面接受应用程序功耗统计的设置;根据所述设置进行统计逻辑计算。本发明还提出一种Android终端应用程序功耗监控的装置,包括捕获模块,用于通过预设的监控点捕获应用程序的行为;收集模块,用于收集所述应用程序的行为的功耗数据;分析模块,用于根据所述功耗数据,分析所述应用程序的功耗,并将分析结果显示于Android终端。优选地,所述装置还包括告警模块,用于对满足预设的告警规则的应用程序,发出告警。优选地,所述装置还包括设置模块,用于设置捕获应用程序行为的监控点。优选地,所述分析模块包括数据挖掘单元,用于对所述功耗数据进行排序和检索;UI单元,用于统计所述排序和检索后的功耗数据。优选地,所述UI单元包括UI设置子单元,用于通过用户界面接受应用程序功耗统计的设置;统计子单元,用于根据所述设置进行统计逻辑计算。本发明提出的一种Android终端应用程序功耗监控的方法和装置,通过设置监控点,监控Android终端内应用程序的行为,并对监控后的数据进行分析处理,使得因应用程序行为而恶化Android终端功耗的问题得到有效控制,提高了用户体验度。


图1为本发明Android终端应用程序功耗监控的方法的流程示意图;图2为本发明Android终端应用程序功耗监控的方法中应用程序行为捕获的示意图;图3为本发明Android终端应用程序功耗监控的方法中数据收集服务的示意图;图4为本发明Android终端应用程序功耗监控的方法中UI界面的示意图;图5为本发明Android终端应用程序功耗监控的装置的结构示意图;图6为本发明Android终端应用程序功耗监控的装置中分析模块的结构示意图7为本发明Android终端应用程序功耗监控的装置中UI单元的结构示意图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施例方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。参照图1,提出本发明Android终端应用程序功耗监控的方法一实施例,包括步骤S101、设置捕获应用程序行为的监控点。监控点是对应用程序进行功耗监控的基础数据源,每个监控点都需要知道当前所监控的应用程序的行为、PID(进程编号)和持续的时间。监控点的类型主要有CPU占用率、不释放睡眠锁、电话服务(手机)、界面置顶、网络使用、开屏幕、使用WIFI、使用BT、使用APN和/或使用GPS。由于监控点所监控的行为都是系统核心的业务逻辑,所以需要修改Android系统的framework的代码来实现。各个监控点可由相关的研发人员定义权重,根据实际开发过程中,各个监控点的行为所造成电流的增减情况来决定,例如CPU处于idle (闲置)或100%运转一定时间的功耗增加,以及系统长时间不睡眠导致的功耗增加相比,哪一个功耗增加更多,则权重就更大。步骤S102、通过预设的监控点捕获应用程序的行为;为了监控应用程序的各种功率消耗的行为,要针对各种不同的行为在Android系统framework内安插一些行为捕捉代码,如图2所示,具体监控点的作用如下(I)PowerManagerService 可捕获任何应用程序持有和释放睡眠锁的时间点,是 android系统的电源管理服务,在此处设置监控点可捕获每个应用程序获得和释放睡眠锁的时间。(2)监控位于systemserver进程的各个关键服务MediaPlayerService 捕获播放媒体的行为。WifiService 捕获打开或关闭wifi的行为。SettingProvider 捕获打开或关闭GPS的行为。ConnectivityService 捕获APN网络连接和断开的行为。BluetoothService 捕获BT的打开和关闭行为。(3)在应用程序所使用的基类中加入监控。OSNetworkSystem. Java 应用程序TCP连接所需要使用的基类,监控应用的网络流量。Activity, java 应用程序所有Acitivity界面的基类,可以监控应用的显示隐藏,从而可以得到该应用的前台使用频率。(4)另外的监控点可以是Iinux操作系统暴露出来的proc接口 /proC/<pid>/ stat 可以获取每个应用程序对CPU的占用时间。步骤S103、收集所述应用程序的行为的功耗数据;数据收集服务和数据库的主要功能是数据保存和数据挖掘。当设置好监控点并获得所需的关键数据后,需要一个统一的数据上报接口帮助各个监控点将监控的数据发送到数据收集服务和数据库中。由于监控点的实现代码散落在系统的各个角落的java文件中,为了让所有的数据都能访问数据上报接口,需要把数据上报接口的java代码实现在 framework的源码中。如图2所示,pcvalue. java即数据上报接口所处的位置,主要实现如下函数接口pub lie static boolean Inser tPo werCons ump t ionRec ore d (Context mRemoteContext, String ComponentName, //所监控应用程序的名称String PkgName,//所监控应用的包名int PID, //所监控应用的PIDint TID,//所监控应用的TIDlong timeinms, //所监控的行为的持续时间String Action, int args)//所监控行为和参数
数据上报接口除了提供一个标准接口连接各个监控点和数据收集服务,还需要负责处理一些对性能的优化,典型的需求即把各监控点的上报请求放入另一个线程去排队执行,使得监控点的请求立刻返回,以避免对UI的流畅度产生不良影响。为了跨进程接收各个监控点从各个应用程序进程中通过数据上报接口上报的数据,数据收集服务可以被设计为一个Data Provider,这是android系统的基本功能之一, 一个Data ftxwider可以运行在任何一个进程,提供一套数据访问接口,其他数据访问的客户端通过binder机制实现对这些接口的跨进程访问。在具体实施方案中,数据收集服务器设计运行于system server进程,如此在其他普通应用中运行时该数据收集服务器不会被内存管理程序限制。数据收集服务器由如下子模块组成(a) Data Provider ^ Π Android 白勺 Data Provider ilil —白勺t示}Π 行工作,这些标准接口添加具体的实现代码即可工作,其中最主要的是insert接口,其接受从数据上报接口传来的数据,initialValues中包括应用程序的名称、行为和操作时间等。public Uri insert (Uri uri, ContentValues initialValues)函数实现就是要把 initialValues中的数据转换为下面所提到的数据库操作的sql指令插入数据的相关表中。(b)数据库=Android系统内置的数据库是sqlite,sqlite是一个轻量但功能完善的数据库,支持标准的sql语法,在此用于存储应用程序上报的数据,该数据库为各个监控点建立数据表,每个监控点上报的数据自动进入对应的数据表,便于检索。整个数据库以 db文件的形式存在,支持备份和离线访问。(c)备份服务数据库在每次充放电周期都做一次备份,备份的文件为一个db文件,方便作为历史记录查询。步骤S104、根据所述功耗数据,分析所述应用程序的功耗,并将分析结果显示于 Android 终端;首先进行数据挖掘。实现对数据进行排序和复杂的检索的功能,简化用户端的数据分析的复杂度。如图3所示,UI Classes通过DataDigHelper从sqlite数据中索引数据,通过添加各种条件可以按照UI界面的设置得到各种统计数据,比如统计一段时间内功率消耗较大的监控点或应用程序,实现计算逻辑并导出简单的接口。DataDigHelper实现了数据挖掘功能,挖掘的数据封装在AppUsageinfo类中。其次,UI界面解析数据挖掘获得的数据到图形界面,通过对多次挖掘的数据进行分析,可以把数据很直观的显示给用户。。UI用户界面提供一个可视化界面,实现各个应用程序功耗的统计、细节分析和告警设置等功能。为了方便用户能简单分析出移动终端功耗的问题,UI用户界面需要支持方便的检索视图,方便用户从所有程序列表中找到需要强制停止或卸载的程序和服务。为了能让用户在电池消耗完之前及时发现功耗过大的应用程序,此模块支持用户的告警设置,用户可以设置当某个应用程序持续不释放锁超过一段时间后告警,用户也可以设置某应用程序一段时间内总功耗超过一预设阀值后告警,上述设置可以使用户按照实际要求过滤一些不太常用却严重影响功耗的应用程序。图4说明了数据统计的逻辑结构,可以从应用程序模式和模块模式多个角度来发现功率异常的应用程序。
步骤S105、对满足预设的告警规则的应用程序,发出告警。告警系统是一个运行于后台的服务,独立于UI界面,监视系统的事件和应用程序的行为。UI界面用户可以设置告警选项,后台的告警服务器根据用户的告警设置实时监视各个应用程序的行为,一旦有超过阀值的行为,发送警告消息提醒用户关闭或卸载相关的应用程序以免电池意外耗光。实现时,可以将其和数据手机服务捆绑在一起,也可以独立做成一个Android系统的service服务。其主要提供一个监视线程,在线程中判断用户通过UI设置的条件从而实现对不同状况的监控。当发现异常的行为满足告警设置时,可以通过intend的方式将告警信息上报给UI系统,UI系统负责向用户以对话框的形式反馈。例如用户设置一旦发现手机闲置后10分钟后阻止系统睡眠的应用,那么告警系统会时刻监视用户的按键、触屏动作停止和屏幕灭的事件,并在这些行为发生后10分钟后触发告警程序。又例如用户设置了监视长期占用CPU比例50%以上的应用程序,那么告警系统每一段时间统计CPU的占用时间,找出占用时间超过50%的应用上报给UI界面。本实施例中,通过设置监控点,监控Android终端内应用程序的行为,并对监控后的数据进行分析处理,使得因应用程序行为而恶化Android终端功耗的问题得到有效控制,提高了用户体验度。参照图5,提出本发明Android终端应用程序功耗监控的装置一实施例,包括设置模块10,用于设置捕获应用程序行为的监控点;捕获模块20,用于通过预设的监控点捕获应用程序的行为;收集模块30,用于收集所述应用程序的行为的功耗数据;分析模块40,用于根据所述功耗数据,分析所述应用程序的功耗,并将分析结果显示于Android终端;告警模块50,用于对满足预设的告警规则的应用程序,发出告警。参照图6,分析模块40包括数据挖掘单元41,用于对所述功耗数据进行排序和检索;UI单元42,用于统计所述排序和检索后的功耗数据。参照图7,UI单元42包括UI设置子单元421,用于通过用户界面接受应用程序功耗统计的设置;统计子单元422,用于根据所述设置进行统计逻辑计算。本实施例的Android终端应用程序功耗监控的装置可以是Android终端,或与 Android终端相连的装置。设置模块10设置各监控点,监控点是对应用程序进行功耗监控的基础数据源,每个监控点都需要知道当前所监控的应用程序的行为、PID(进程编号)和持续的时间。监控点的类型主要有CPU占用率、不释放睡眠锁、电话服务(手机)、界面置顶、网络使用、开屏幕、使用WIFI、使用BT、使用APN和/或使用GPS。由于监控点所监控的行为都是系统核心的业务逻辑,所以需要修改Android系统的framework的代码来实现。设置模块10同时接收相关的研发人员定义的各个监控点的权重,在实际开发过程中,各个监控点的行为所造成电流的增减情况不同,例如CPU处于idle (闲置)或100%运转一定时间的功耗增加,以及系统长时间不睡眠导致的功耗增加相比,哪一个功耗增加更多,则权重就更大。捕获模块20为了监控应用程序的各种功率消耗的行为,要针对各种不同的行为在Android系统framework内安插一些行为捕捉代码,如图2所示,具体监控点的作用如下(I)PowerManagerService 可捕获任何应用程序持有和释放睡眠锁的时间点,是 android系统的电源管理服务,在此处设置监控点可捕获每个应用程序获得和释放睡眠锁的时间。(2)监控位于systemserver进程的各个关键服务MediaPlayerService 捕获播放媒体的行为。WifiService 捕获打开或关闭wifi的行为。SettingProvider 捕获打开或关闭GPS的行为。ConnectivityService 捕获APN网络连接和断开的行为。BluetoothService 捕获BT的打开和关闭行为。(3)在应用程序所使用的基类中加入监控。OSNetworkSystem. Java 应用程序TCP连接所需要使用的基类,监控应用的网络流量。Activity, java:应用程序所有Acitivity界面的基类,可以监控应用的显示隐藏,从而可以得到该应用的前台使用频率。(4)另外的监控点可以是Iinux操作系统暴露出来的proc接口 /proC/<pid>/ stat 可以获取每个应用程序对CPU的占用时间。收集模块30进行数据收集服务,主要功能是数据保存和数据挖掘。当设置好监控点并获得所需的关键数据后,需要一个统一的数据上报接口帮助各个监控点将监控的数据发送到收集模块30中。由于监控点的实现代码散落在系统的各个角落的java文件中,为了让所有的数据都能访问数据上报接口,需要把数据上报接口的java代码实现在framework 的源码中。如图2所示,pcvalue. java即数据上报接口所处的位置,主要实现如下函数接 Π pub lie static boolean Inser tPo werCons ump t ionRe cored (Context mRemoteContext, String ComponentName),// 所监控应用程序的名称String PkgName,//所监控应用的包名int PID,//所监控应用的PIDint TID, //所监控应用的TIDlong timeinms,//所监控的行为的持续时间String Action, int args)//所监控行为和参数数据上报接口除了提供一个标准接口连接各个监控点和收集模块30,还需要负责处理一些对性能的优化,典型的需求即把各监控点的上报请求放入另一个线程去排队执行,使得监控点的请求立刻返回,以避免对UI的流畅度产生不良影响。为了跨进程接收各个监控点从各个应用程序进程中通过数据上报接口上报的数据,收集模块30可以被设计为一个Data Provider,这是android系统的基本功能之一,一个Data ftxwider可以运行在任何一个进程,提供一套数据访问接口,其他数据访问的客户端通过binder机制实现对这些接口的跨进程访问。在具体实施方案中,收集模块30设计运行于system server进程,如此在其他普通应用中运行时该收集模块30不会被内存管理程序限制。收集模块30由如下子模块组成(a) Data Provider ^ Π Android 白勺 Data Provider ilil —白勺t示}Π 行工作,这些标准接口添加具体的实现代码即可工作,其中最主要的是insert接口,其接受从数据上报接口传来的数据,initialValues中包括应用程序的名称、行为和操作时间等。public Uri insert (Uri uri, ContentValues initialValues)函数实现就是要把 initialValues中的数据转换为下面所提到的数据库操作的sql指令插入数据的相关表中。(b)数据库=Android系统内置的数据库是sqlite,sqlite是一个轻量但功能完善的数据库,支持标准的sql语法,在此用于存储应用程序上报的数据,该数据库为各个监控点建立数据表,每个监控点上报的数据自动进入对应的数据表,便于检索。整个数据库以 db文件的形式存在,支持备份和离线访问。(c)备份服务数据库在每次充放电周期都做一次备份,备份的文件为一个db文件,方便作为历史记录查询。分析模块40根据上述功耗数据,分析应用程序的功耗,包括数据挖掘单元41进行数据挖掘。实现对数据进行排序和复杂的检索的功能,简化用户端的数据分析的复杂度。如图3所示,UI单元42(UI Classes)通过DataDigHelper从 sqlite数据中索引数据,通过添加各种条件可以按照UI界面的设置得到各种统计数据,比如统计一段时间内功率消耗较大的监控点或应用程序,实现计算逻辑并导出简单的接口。 DataDigHelper实现了数据挖掘功能,挖掘的数据封装在AppUsageinfo类中。UI单元42解析数据挖掘单元41获得的数据,并在图形界面上显示。UI设置子单元421提供一个可视化界面,实现各个应用程序功耗的统计、细节分析和告警设置等功能。 为了方便用户能简单分析出移动终端功耗的问题,UI模块需要支持方便的检索视图,方便用户从所有程序列表中找到需要强制停止或卸载的程序和服务。为了能让用户在电池消耗完之前及时发现功耗过大的应用程序,此模块支持用户的告警设置,用户可以设置当某个应用程序持续不释放锁超过一段时间后告警,用户也可以设置某应用程序一段时间内总功耗超过一预设阀值后告警,上述设置可以使用户按照实际要求过滤一些不太常用却严重影响功耗的应用程序。统计子单元422通过对多次挖掘的数据进行分析,可以把数据很直观的显示给用户。图4说明了数据统计的逻辑结构,可以从应用程序模式和模块模式多个角度来发现功率异常的应用程序。告警模块50是一个运行于后台的服务,独立于UI单元42,监视系统的事件和应用程序的行为。UI单元42可以设置告警选项,告警模块50根据用户的告警设置实时监视各个应用程序的行为,一旦有超过阀值的行为,发送警告消息提醒用户关闭或卸载相关的应用程序以免电池意外耗光。实现时,可以将告警模块50和数据手机服务捆绑在一起,也可以独立做成一个 Android系统的service服务。其主要提供一个监视线程,在线程中判断用户通过UI设置子单元421设置的条件从而实现对不同状况的监控。当发现异常的行为满足告警设置时, 可以通过intend的方式将告警信息上报给UI单元42,UI单元42负责向用户以对话框的形式反馈。例如用户设置一旦发现手机闲置后10分钟后阻止系统睡眠的应用,那么告警模块50会时刻监视用户的按键、触屏动作停止和屏幕灭的事件,并在这些行为发生后10分钟后触发告警程序。又例如用户设置了监视长期占用CPU比例50%以上的应用程序,那么告警模块50 每一段时间统计CPU的占用时间,找出占用时间超过50%的应用上报给UI界面。本实施例中,通过设置监控点,监控Android终端内应用程序的行为,并对监控后的数据进行分析处理,使得因应用程序行为而恶化Android终端功耗的问题得到有效控制,提高了用户体验度。以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种Android终端应用程序功耗监控的方法,其特征在于,包括 通过预设的监控点捕获应用程序的行为;收集所述应用程序的行为的功耗数据;根据所述功耗数据,分析所述应用程序的功耗,并将分析结果显示于Android终端。
2.如权利要求1所述的方法,其特征在于,在执行所述将分析结果显示于Android终端之后,还包括对满足预设的告警规则的应用程序,发出告警。
3.如权利要求1或2所述的方法,其特征在于,在执行所述通过预设的监控点捕获应用程序的行为之前,还包括设置捕获应用程序行为的监控点。
4.如权利要求1或2所述的方法,其特征在于,所述根据功耗数据,分析应用程序的功耗,包括对所述功耗数据进行排序和检索; 统计所述排序和检索后的功耗数据。
5.如权利要求4所述的方法,其特征在于,所述统计排序和检索后的功耗数据具体为 通过用户界面接受应用程序功耗统计的设置;根据所述设置进行统计逻辑计算。
6.一种Android终端应用程序功耗监控的装置,其特征在于,包括 捕获模块,用于通过预设的监控点捕获应用程序的行为;收集模块,用于收集所述应用程序的行为的功耗数据;分析模块,用于根据所述功耗数据,分析所述应用程序的功耗,并将分析结果显示于 Android 终端。
7.如权利要求6所述的装置,其特征在于,还包括告警模块,用于对满足预设的告警规则的应用程序,发出告警。
8.如权利要求6或7所述的装置,其特征在于,还包括 设置模块,用于设置捕获应用程序行为的监控点。
9.如权利要求6或7所述的装置,其特征在于,所述分析模块包括 数据挖掘单元,用于对所述功耗数据进行排序和检索;UI单元,用于统计所述排序和检索后的功耗数据。
10.如权利要求9所述的装置,其特征在于,所述UI单元包括UI设置子单元,用于通过用户界面接受应用程序功耗统计的设置; 统计子单元,用于根据所述设置进行统计逻辑计算。
全文摘要
本发明揭示了一种Android终端应用程序功耗监控的方法,包括通过预设的监控点捕获应用程序的行为;收集所述应用程序的行为的功耗数据;根据所述功耗数据,分析所述应用程序的功耗,并将分析结果显示于Android终端。本发明还提供了对应的装置。本发明提供的一种Android终端应用程序功耗监控的方法和装置,解决Android终端由于应用程序的行为而增大功耗的问题。
文档编号G06F11/32GK102306118SQ20111025557
公开日2012年1月4日 申请日期2011年8月31日 优先权日2011年8月31日
发明者曾慧鹏 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1