一种基于Android的系统资源管理方法和装置转让专利

申请号 : CN201710954634.4

文献号 : CN107643976B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 何源杜力郑霄龙

申请人 : 清华大学

摘要 :

本发明提供一种基于Android的系统资源管理方法和装置,其中,所述方法包括:S1,应用系统内部命令上下文意识框架获取任一应用程序的使用率;S2,将所有所述应用程序按照对应的使用率从高到低进行排序,获取初始应用集合;S3,应用自适应机制调整所述初始应用集合,获取最终应用集合。本发明提供的一种基于Android的系统资源管理方法和装置,通过系统内部上下文意识获取应用程序的使用率,实现系统资源的管理,降低了对硬件的依赖性,丰富了交互,改善了多任务管理的用户体验。

权利要求 :

1.一种基于Android的系统资源管理方法,其特征在于,包括:S1,应用系统内部命令上下文意识框架获取任一应用程序的使用率;

S2,将所有所述应用程序按照对应的使用率从高到低进行排序,获取初始应用集合;

S3,应用自适应机制调整所述初始应用集合,获取最终应用集合;

所述步骤S1进一步包括:

应用系统内部命令上下文意识框架获取内部上下文意识;所述内部上下文意识包括任一应用程序对应的前台时间、第一次数和第二次数,所述前台时间是预设时间内所述任一应用程序在前台占用的时间,所述第一次数是预设时间内所述任一应用程序被打开的次数,所述第二次数是预设时间内所述任一应用程序在成为前台应用前被打开的次数;

根据所述内部上下文意识获取任一应用程序的使用率:

vi=vti+vhi+vci

其中,vi为第i个应用程序的使用率,i=1,2,…,n,n为系统中应用程序的总数;vti为第i个应用程序的前台时间,vhi为第i个应用程序的第一次数,vci为第i个应用程序的第二次数。

2.根据权利要求1所述的方法,其特征在于,所述步骤S2进一步包括:根据每一应用程序的使用率,应用整数线性规划优化算法,获取初始应用集合:其中,Sp为所述初始应用集合;xi为第i个应用程序在系统中的实例数,xi∈{0,1}。

3.根据权利要求1所述的方法,其特征在于,所述步骤S3进一步包括:确认所述初始应用集合中所有应用程序占用的内存总额Mr不超过当前系统可用内存Ma:其中,mriy为第i个应用程序状态为y时占用的内存,i=1,2,…,n,n为系统中应用程序的总数,y=r,p,s,d,r表示活动状态,p表示暂停状态,s表示停止状态,d表示结束状态;Ma为当前系统可用内存;xi为第i个应用程序在系统中的实例数,xi∈{0,1};

若所述Mr超过Ma,则移除所述初始应用集合中应用程序使用率最小的应用程序,直至所述Mr不超过Ma;

将所述Mr不超过Ma的初始应用集合作为最终应用集合。

4.根据权利要求1所述的方法,其特征在于,步骤S3中所述最终应用集合为:Sf=Min∑Ei,Ei=vi×ti

其中,Sf为最终应用集合,Ei为第i个应用程序的期望,ti为第i个应用程序的启动时间。

5.根据权利要求1所述的方法,其特征在于,还包括步骤S0:在Android系统Zygote进程/system.bin/目录下注册系统内部命令上下文意识框架的app_process拓展文件。

6.根据权利要求1所述的方法,其特征在于,所述步骤S2和S3间还包括:根据外部上下文意识调整所述初始应用集合。

7.根据权利要求1所述的方法,其特征在于,所述步骤S1中,所述内部上下文意识还包括任一所述应用程序的子状态;所述子状态为对应应用程序当前显示的类名;

对应的,所述步骤S1进一步包括:每隔预设采集时间获取并记录当前处于前台的应用程序及其对应的子状态;

根据预设时间内记录的当前处于前台的应用程序及其对应的子状态,计算任一应用程序的前台时间、第一次数与第二次数及所述任一应用程序对应任一子状态的前台时间、第一次数与第二次数;

根据任一应用程序的前台时间、第一次数与第二次数计算所述任一应用程序的使用率;根据任一应用程序对应任一子状态的前台时间、第一次数与第二次数计算所述任一应用程序对应任一子状态的使用率。

8.根据权利要求7所述的方法,其特征在于,步骤S2的所述初始应用集合中,任一应用程序对应的子状态为所述任一应用程序中使用率最高且启动时间最短的子状态。

9.一种基于Android的系统资源管理装置,其特征在于,包括:状态获取单元,应用系统内部命令上下文意识框架获取任一应用程序的使用率;

优化筛选单元,用于将所有所述应用程序按照对应的使用率从高到低进行排序,获取初始应用集合;

自适应单元,应用自适应机制调整所述初始应用集合,获取最终应用集合;

所述优化筛选单元分别与所述状态获取单元和自适应单元电连接;

所述状态获取单元,进一步包括:

应用系统内部命令上下文意识框架获取内部上下文意识;所述内部上下文意识包括任一应用程序对应的前台时间、第一次数和第二次数,所述前台时间是预设时间内所述任一应用程序在前台占用的时间,所述第一次数是预设时间内所述任一应用程序被打开的次数,所述第二次数是预设时间内所述任一应用程序在成为前台应用前被打开的次数;

根据所述内部上下文意识获取任一应用程序的使用率:

vi=vti+vhi+vci

其中,vi为第i个应用程序的使用率,i=1,2,…,n,n为系统中应用程序的总数;vti为第i个应用程序的前台时间,vhi为第i个应用程序的第一次数,vci为第i个应用程序的第二次数。

说明书 :

一种基于Android的系统资源管理方法和装置

技术领域

[0001] 本发明涉及移动系统预测控制领域,尤其涉及一种基于Android的系统资源管理方法和装置。

背景技术

[0002] 随着移动互联网的快速发展,安卓(Android)作为一种操作系统,占领了全球移动终端系统的85%,广泛的应用于智能手机和平板电脑等设备上。同时,随着移动终端及其载入的多任务操作系统的不断改进,移动终端与用户交互的流畅性和效率也随之提高。尤其是数级优化方法的提出,不仅优化了系统资源管理,也改善了手机多任务管理的用户体验,扩大了系统服务范围。
[0003] 为了丰富交互与充分发挥系统的多任务管理功能,随着传感器网络的发展,人们创造了外部上下文感知来学习预测控制用户交互,以期在提高用户体验的同时最大化系统资源利用率。移动终端操作系统的上下文多任务管理分成两大部分:上下文的获取和适应管理机制。其中,上下文指的是内容,包括位置、移动终端状态和时间点或区间等信息。目前的上下文感知主要是外部上下文感知,通过直接采集传感器的数据来建立上下文信息库。为了提高信息质量甚至改善信息的针对性,研究人员通过在应用程序段设立了灵敏规则来帮助系统筛选传感器和传感器数据。
[0004] 目前,基于上下文的系统资源管理中,有些研究把系统中的应用程序作为字符串并且使用字符串预测算法预测应用程序未来将被使用的可能性的顺序和未来时间点,并获得了很高的预测准确率,但是需要很长的时间的数据训练。此外,一些研究通过直接修改系统结构和工作模式来扩大系统可用空间进行存储,显然提高了系统能存储与取回的状态,使应用程序的启动速度加快,但这种方法直接受硬件设计结构的影响。还有研究在应用程序中设置工作模式,并按照工作模式定时采集传感器数据信息来动态调整应用程序状态,取得了非常好的多任务管理效率,但是受到了传感器信息质量与局限性的影响。
[0005] 这些方法由于数据训练的难度以及硬件的依赖性而受到了限制,因此对系统资源管理机制以用户为中心的实时性和动态性造成了限制。

发明内容

[0006] 本发明为解决现有技术中存在的上下文感知受硬件限制的问题,提供了一种基于Android的系统资源管理方法和装置。
[0007] 一方面,本发明提出一种基于Android的系统资源管理方法,包括:S1,应用系统内部命令上下文意识框架获取任一应用程序的使用率;S2,将所有所述应用程序按照对应的使用率从高到低进行排序,获取初始应用集合;S3,应用自适应机制调整所述初始应用集合,获取最终应用集合。
[0008] 优选地,所述步骤S1进一步包括:应用系统内部命令上下文意识框架获取内部上下文意识;所述内部上下文意识包括任一应用程序对应的前台时间、第一次数和第二次数,所述前台时间是预设时间内所述任一应用程序在前台占用的时间,所述第一次数是预设时间内所述任一应用程序被打开的次数,所述第二次数是预设时间内所述任一应用程序在成为前台应用前被打开的次数;根据所述内部上下文意识获取任一应用程序的使用率:
[0009] vi=vti+vhi+vci
[0010] 其中,vi为第i个应用程序的使用率,i=1,2,…,n,n为系统中应用程序的总数;vti为第i个应用程序的前台时间,vhi为第i个应用程序的第一次数,vci为第i个应用程序的第二次数。
[0011] 优选地,所述步骤S2进一步包括:根据每一应用程序的使用率,应用整数线性规划优化算法,获取初始应用集合:
[0012]
[0013] 其中,Sp为所述初始应用集合;xi为第i个应用程序在系统中的实例数,xi∈{0,1}。
[0014] 优选地,所述步骤S3进一步包括:确认所述初始应用集合中所有应用程序占用的内存总额Mr不超过当前系统可用内存Ma:
[0015]
[0016] 其中,mriy为第i个应用程序状态为y时占用的内存,i=1,2,…,n,n为系统中应用程序的总数,y=r,p,s,d,r表示活动状态,p表示暂停状态,s表示停止状态,d表示结束状态;Ma为当前系统可用内存;xi为第i个应用程序在系统中的实例数,xi∈{0,1};若所述Mr超过Ma,则移除所述初始应用集合中应用程序使用率最小的应用程序,直至所述Mr不超过Ma;将所述Mr不超过Ma的初始应用集合作为最终应用集合。
[0017] 优选地,步骤S3中所述最终应用集合为:
[0018] Sf=Min∑Ei,Ei=vi×ti
[0019] 其中,Sf为最终应用集合,Ei为第i个应用程序的期望,ti为第i个应用程序的启动时间。
[0020] 优选地,还包括步骤S0:在Android系统Zygote进程/system.bin/目录下注册系统内部命令上下文意识框架的app_process拓展文件。
[0021] 优选地,所述步骤S2和S3间还包括:根据外部上下文意识调整所述初始应用集合。
[0022] 优选地,所述步骤S1中,所述内部上下文意识还包括任一所述应用程序的子状态;所述子状态为对应应用程序当前显示的类名;对应的,所述步骤S1进一步包括:每隔预设采集时间获取并记录当前处于前台的应用程序及其对应的子状态;根据预设时间内记录的当前处于前台的应用程序及其对应的子状态,计算任一应用程序的前台时间、第一次数与第二次数及所述任一应用程序对应任一子状态的前台时间、第一次数与第二次数;根据任一应用程序的前台时间、第一次数与第二次数计算所述任一应用程序的使用率;根据任一应用程序对应任一子状态的前台时间、第一次数与第二次数计算所述任一应用程序对应任一子状态的使用率。
[0023] 优选地,步骤S2的所述初始应用集合中,任一应用程序对应的子状态为所述任一应用程序中使用率最高且启动时间最短的子状态。
[0024] 另一方面,本发明提出一种基于Android的系统资源管理装置,包括:状态获取单元,应用系统内部命令上下文意识框架获取任一应用程序的使用率;优化筛选单元,用于将所有所述应用程序按照对应的使用率从高到低进行排序,获取初始应用集合;自适应单元,应用自适应机制调整所述初始应用集合,获取最终应用集合;所述优化筛选单元分别与所述状态获取单元和自适应单元电连接。
[0025] 本发明提供的一种基于Android的系统资源管理方法和装置,通过系统内部上下文意识获取应用程序的使用率,实现系统资源的管理,降低了对硬件的依赖性,丰富了交互,改善了多任务管理的用户体验。

附图说明

[0026] 图1为本发明具体实施例的一种基于Android的系统资源管理方法的流程示意图;
[0027] 图2为本发明具体实施例的应用程序状态转换的流程示意图;
[0028] 图3为本发明具体实施例的一种基于Android的系统资源管理装置的结构示意图;
[0029] 图4为本发明具体实施例中原生Android OS内存CPU资源变化示意图;
[0030] 图5为本发明具体实施例中带有CAMDroid Android OS内存CPU资源变化示意图;
[0031] 图6为本发明具体实施例中原生Android OS无CAMDroid电池统计示意图;
[0032] 图7为本发明具体实施例中带有CAMDroid Android OS电池统计示意图。

具体实施方式

[0033] 下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0034] 随着传感器的嵌入,人们创造了外部上下文感知来学习预测控制用户交互,以期在提高用户体验的同时能够最大化系统资源利用率。目前很多研究重点根据外部上下文及内部设置的自适应机制来完成以上的需求,但是忽视了通过系统命令内部挖掘来提供更丰富的交互的可能性。因此本发明将系统命令内部的监听可以作为一种新的方法来解决上下文的获取,并创造和提高以用户为中心的多任务管理机制的实时性效率及准确率。
[0035] 图1为本发明具体实施例的一种基于Android的系统资源管理方法的流程示意图,如图1所示,一种基于Android的系统资源管理方法,包括:S1,应用系统内部命令上下文意识框架获取任一应用程序的使用率;S2,将所有所述应用程序按照对应的使用率从高到低进行排序,获取初始应用集合;S3,应用自适应机制调整所述初始应用集合,获取最终应用集合。
[0036] 具体地,首先,应用基于Android系统建立的系统内部命令上下文意识框架获取任一应用程序的使用率。其中,所述系统内部命令上下文意识框架建立在Android系统的核心命令处,通过条例所述系统内部命令上下文意识框架的内容引入系统命令内部的上下文意识,由此实时动态任一应用程序的使用率。
[0037] 其次,在获取所有应用程序对应的使用率之后,将所有应用程序按照对应的使用率的值由高到低进行排序,根据排列顺序将所有应用程序囊括在集合中,定义所述集合为初始应用集合。
[0038] 最后,根据自适应机制调整上一步骤中获取的初始应用集合,将调整后的初始应用集合定义为最终应用集合,按照所述最终应用集合对系统资源进行管理。
[0039] 本发明具体实施例提供的一种基于Android的系统资源管理方法,通过系统内部上下文意识获取应用程序的使用率,实现系统资源的管理,降低了对硬件的依赖性,丰富了交互,改善了多任务管理的用户体验。
[0040] 基于上述具体实施例,一种基于Android的系统资源管理方法,所述步骤S1进一步包括:应用系统内部命令上下文意识框架获取内部上下文意识;根据所述内部上下文意识获取任一应用程序的使用率。
[0041] 具体地,步骤S1中,应用基于Android系统建立的系统内部命令上下文意识框架获取任一应用程序的使用率进一步包括:
[0042] 首先,通过条例所述系统内部命令上下文意识框架的内容引入系统命令内部的上下文意识;
[0043] 其次,根据上一步骤中获取的内部上下文意识计算任一应用程序的使用率。
[0044] 进一步地,所述内部上下文意识包括任一应用程序对应的前台时间、第一次数和第二次数。其中,所述前台时间是预设时间内所述任一应用程序在前台占用的时间;所述第一次数是预设时间内所述任一应用程序被打开的次数;所述第二次数是预设时间内所述任一应用程序在成为前台应用前被打开的次数。
[0045] 根据上述任一应用程序对应的内部上下文意识,计算所述任一应用程序的使用率:
[0046] vi=vti+vhi+vci
[0047] 其中,vi为第i个应用程序的使用率,i=1,2,…,n,n为系统中应用程序的总数;vti为第i个应用程序的前台时间,vhi为第i个应用程序的第一次数,vci为第i个应用程序的第二次数。
[0048] 本发明具体实施例中提出了应用程序使用率的获取方法,为后续通过比较使用率对多任务管理提供了前提,内部上下文感知的获取降低了系统资源管理对硬件的依赖性,提高了实时性效率。
[0049] 基于上述任一具体实施例,一种基于Android的系统资源管理方法,所述步骤S2进一步包括:根据每一应用程序的使用率,应用整数线性规划优化算法,获取初始应用集合。
[0050] 具体地,所述步骤S2中,将所有应用程序按照对应的使用率的值由高到低进行排序,并根据整数线性规划优化算法获取初始应用集合:
[0051]
[0052] 其中,Sp为所述初始应用集合;xi为第i个应用程序在系统中的实例数,xi∈{0,1},若xi=0,则第i个应用程序不包含在所述初始应用集合Sp中;若xi=1,则第i个应用程序包含在所述初始应用集合Sp中。
[0053] 基于上述任一具体实施例,一种基于Android的系统资源管理方法,所述步骤S3进一步包括:确认所述初始应用集合中所有应用程序占用的内存总额Mr不超过当前系统可用内存Ma;若所述Mr超过Ma,则移除所述初始应用集合中应用程序使用率最小的应用程序,直至所述Mr不超过Ma;将所述Mr不超过Ma的初始应用集合作为最终应用集合。
[0054] 具体地,步骤S3中,根据自适应机制调整上一步骤中获取的初始应用集合,将调整后的初始应用集合定义为最终应用集合,进一步包括:
[0055] 首先,根据下式判断所述初始应用集合中所有应用程序占用的内存总额Mr是否超过了当前系统可用内存Ma:
[0056]
[0057] 其中,mriy为第i个应用程序状态为y时占用的内存,i=1,2,…,n,n为系统中应用程序的总数,y=r,p,s,d,r表示活动状态,p表示暂停状态,s表示停止状态,d表示结束状态;Ma为当前系统可用内存;xi为第i个应用程序在系统中的实例数,xi∈{0,1},若xi=0,则第i个应用程序不包含在所述初始应用集合Sp中;若xi=1,则第i个应用程序包含在所述初始应用集合Sp中。
[0058] 若所述初始应用集合中所有应用程序占用的内存总额Mr不超过当前系统可用内存Ma,则将所述初始应用集合作为最终应用集合,并通过最终应用集合对系统资源进行管理。
[0059] 若所述初始应用集合中所有应用程序占用的内存总额Mr超过了当前系统可用内存Ma,则移除所述初始应用集合中使用率最小的应用程序,并重新判断Mr是否超过Ma。如果Mr依然超过Ma,继续移除所述初始应用集合中使用率最小的应用程序,直至所述Mr不超过Ma,满足内存限制要求。
[0060] 最后,将保证所有应用程序占用的内存总额Mr不超过当前系统可用内存Ma的集合作为最终应用集合,并通过最终应用集合对系统资源进行管理。
[0061] 本发明具体实施例提出了自适应机制的具体实现方式,实现了系统资源的有效管理。
[0062] 基于上述任一具体实施例,一种基于Android的系统资源管理方法,步骤S3中所述最终应用集合为:
[0063] Sf=Min∑Ei,Ei=vi×ti
[0064] 其中,Sf为最终应用集合,Ei为第i个应用程序的期望,ti为第i个应用程序的启动时间。
[0065] 具体地,所述应用程序的状态可分为四种:活动状态(Running)、暂停状态(Paused)、停止状态(Stopped)和结束状态(Shut Down)。
[0066] 其中,当应用程序处于前台且正在与用户进行交互(Activity处于栈顶),则所述应用程序的状态为活动状态。
[0067] 当应用程序失去焦点,但是依然可见(一个非全屏的Activity或者一个透明的Activity被放置在栈顶),此时为暂停状态(Paused)。暂停状态下的应用程序依然保持活力(保持所有的状态和成员信息,并与窗口管理器保持连接),但是在系统内存极端低下的时候将会被结束。
[0068] 当应用程序被移动到后台,被另外的应用程序完全覆盖,此时所述应用程序为停止状态(Stopped)。停止状态下,应用程序保持所有状态和成员信息,窗口被隐藏,不再可见。当系统内存需要被用在其他地方的时候,停止状态下的应用程序将被结束。
[0069] 当应用程序处于暂停状态或停止状态时,系统要求所述应用程序结束,则所述应用程序转入结束状态(Shut Down),必须重新开始并重置原状态才能再次显示给用户。
[0070] 图2为本发明具体实施例的应用程序状态转换的流程示意图,如图2所示,当一个应用程序处于在前台并且正在用户进行交互时,其状态是活动状态。假如来了一个电话并且用户暂时切换去处理电话,刚才的应用程序将被系统呼叫OnPause()方法跳转到暂停状态。该应用程序回到活动状态需要被系统呼叫OnResume()方法。如果刚才的应用程序不被系统叫回,而系统决定结束此应用程序,原因可能在于回收内存资源,则该应用程序将被系统呼叫OnStop()方法,紧跟着OnDestroy()方法结束此应用程序。该应用程序需要被系统呼叫OnCreate()方法、OnStart()方法及OnResume()方法才能回到活动状态。如果该应用程序被移动到后台时系统没决定结束它,而选择呼叫OnStop()方法把它进入停止状态,回到活动状态需要被系统呼叫OnRestart()方法、OnStart()方法及OnResume()方法。
[0071] 由此,定义应用程序的启动时间为:
[0072] ti=TTROnCreate()+TTROnRestart()+TTROnStart()+TTROnResume()[0073] 其中,ti为第i个应用程序的启动时间,TRROnCreate()为OnCreate()方法需要运行的时间,TRROnRestart()为OnRestart()方法需要运行的时间,TRROnStart()为OnStart()方法需要运行的时间,TRROnResume()为OnResume()方法需要运行的时间。
[0074] 根据应用程序的实时状态选择所述应用程序启动需要呼叫的方法并对应获取所述应用程序的启动时间。
[0075] 接着,根据所述应用程序的启动时间和步骤S1中获取的应用程序的使用率,定义应用程序的期望为:
[0076] Ei=vi×ti
[0077] 其中,Ei、vi和ti对应第i个应用程序的期望、使用率和启动时间。
[0078] 由上,步骤S3中所述最终应用集合Sf在满足自适应机制的情况下集合中所有应用程序的期望之和最小:
[0079] Sf=Min∑Ei
[0080] 本发明具体实施例中提出了最终应用集合的表现形式,通过最终应用集合实现系统资源的管理,丰富了交互,改善了多任务管理的用户体验。
[0081] 基于上述任一具体实施例,一种基于Android的系统资源管理方法,还包括步骤S0:在Android系统Zygote进程/system.bin/目录下注册系统内部命令上下文意识框架的app_process拓展文件。
[0082] 具体地,Zygote进程是Android系统运行时的核心。每一个被启动的应用程序将会以Zygote进程的副本(fork)存在于系统中。当系统启动时,/init.rc将启动Zygote进程。Zygote进程对应的具体程序是/system.bin/目录下的app_process。Zygote进程通过app_process启动并加载所需要的类以及调用所有初始化方法。
[0083] 系统内部命令上下文意识框架CAMDroid在/system.bin/目录下注册了一个拓展app_process,系统在启动时,会加载所述系统内部命令上下文意识框架注册的app_process进程文件,并在classpath添加一个额外的jar包,使得系统可以从jar包中加载其包含的方法。由此,系统内部命令上下文意识框架CAMDroid成为Zygote的一部分,可以通过条例Zygote进程中的内容来引入系统命令内部之间的上下文意识。
[0084] 本发明具体实施例中提出了系统内部命令上下文意识框架的建立,为系统内部上下文意识的获取创造了平台。
[0085] 基于上述任一具体实施例,一种基于Android的系统资源管理方法,所述步骤S2和S3间还包括:根据外部上下文意识调整所述初始应用集合。
[0086] 具体地,根据系统内部上下文对应用程序进行排序并获取初始应用集合后,还需要再根据外部上下文意识对所述初始应用集合进行进一步的筛选优化工作,并将经过外部上下文意识优化的初始应用集合通过自适应机制进行调整。
[0087] 根据初始应用集合里的应用程序的类别、属性和外部上下文反应的用户的状态来进一步判断初始应用集合中每一应用程序排列的准确度。未符合外部上下文标准的应用程序被从初始应用集合中移除,更新后的初始应用集合按照每一应用程序对应的使用率值的大小重新进行排序,直至所述初始应用集合中的应用程序满足当前的外部上下文要求。
[0088] 其中,本发明实施例中所述应用程序的类别和属性可以从应用商店获取,但不限于此。所述外部上下文意识包括系统提供的Step、Counter detector、Tiltdetector、On Body detection、Pick up和Wake up等,用于模拟用户的外部场景并进一步对初始应用集合进行筛选。
[0089] 本发明具体实施例中通过内部上下文意识结合外部上下文意识对应用集合进行优化筛选,实现了多任务调度和系统资源管理,进一步丰富了交互,优化了内存资源,改善了多任务管理的用户体验。
[0090] 基于上述任一具体实施例,一种基于Android的系统资源管理方法,所述步骤S1中,所述内部上下文意识还包括任一所述应用程序的子状态;所述子状态为对应应用程序当前显示的类名。
[0091] 对应的,所述步骤S1进一步包括:每隔预设采集时间获取并记录当前处于前台的应用程序及其对应的子状态;根据预设时间内记录的当前处于前台的应用程序及其对应的子状态,计算任一应用程序的前台时间、第一次数与第二次数及所述任一应用程序对应任一子状态的前台时间、第一次数与第二次数;根据任一应用程序的前台时间、第一次数与第二次数计算所述任一应用程序的使用率;根据任一应用程序对应任一子状态的前台时间、第一次数与第二次数计算所述任一应用程序对应任一子状态的使用率。
[0092] 具体地,所述内部上下文意识还包括任一所述应用程序当前显示的类名,即所述任一对应应用程序的子状态。所述子状态可以通过信息咨询服务获取。
[0093] 对应的,所述步骤S1进一步包括:
[0094] 首先,系统应用信息咨询服务获取并记录当前前台应用程序的子状态。
[0095] 随后,等待预设采集时间后,再次获取并记录当前前台应用程序的子状态。
[0096] 例如,设定预设采集时间为1秒。应用信息咨询服务来获取当前前台应用程序的当前显示的类名来作为该应用程序的一个子状态。1秒后,再进行一次信息咨询服务,若结果与上一次相同,则表示用户一直在与此子状态进行交互;若结果与上次不同,则表示用户跳转到同一应用程序另一个子状态或者另一个应用程序的子状态,记录此类名。
[0097] 接着,根据预设时间内记录的当前处于前台的应用程序及其对应的子状态,计算任一应用程序及所述任一应用程序对应任一子状态的前台时间、第一次数与第二次数。
[0098] 然后,根据任一应用程序的前台时间、第一次数与第二次数计算所述任一应用程序的使用率。
[0099] 同时,根据任一应用程序对应任一子状态的前台时间、第一次数与第二次数计算所述任一应用程序对应任一子状态的使用率:
[0100] vij=vtij+vhij+vcij
[0101] 其中,vij为第i个应用程序的第j个子状态的使用率,i=1,2,…,n,n为系统中应用程序的总数,j=1,2,…,m,m为第i个应用程序对应的子状态的总数;vtij为第i个应用程序的第j个子状态的前台时间,vhij为第i个应用程序的第j个子状态的第一次数,vcij为第i个应用程序的第j个子状态的第二次数。
[0102] 本发明具体实施例中提出了应用系统子状态的获取方法,为后续应用子状态调整应用集合提供了条件。
[0103] 基于上述任一具体实施例,一种基于Android的系统资源管理方法,步骤S2的所述初始应用集合中,任一应用程序对应的子状态为所述任一应用程序中使用率最高且启动时间最短的子状态。
[0104] 具体地,步骤S1中获取任一应用程序对应的子状态的使用率后,在步骤S2中,对所述初始应用集合中的所述任一应用程序对应的子状态进行调整,使所述初始应用集合中任一应用程序对应的子状态为所述任一应用程序对应的所有子状态中使用率最高的子状态。
[0105] 与此同时,保证所述初始应用集合中任一应用程序对应的子状态为所述任一应用程序对应的所有置状态中启动时间最短的子状态。
[0106] 基于上述任一方法具体实施例,图3为本发明具体实施例的一种基于Android的系统资源管理装置的结构示意图,如图3所示,一种基于Android的系统资源管理装置,包括状态获取单元301、优化筛选单元302和自适应单元303。其中,所述状态获取单元301,应用系统内部命令上下文意识框架获取任一应用程序的使用率;所述优化筛选单元302,用于将所有所述应用程序按照对应的使用率从高到低进行排序,获取初始应用集合;所述自适应单元303,应用自适应机制调整所述初始应用集合,获取最终应用集合。
[0107] 具体地,状态获取单元301,应用基于Android系统建立的系统内部命令上下文意识框架获取任一应用程序的使用率,并将所述应用程序的使用率发送给优化筛选单元302。其中,所述系统内部命令上下文意识框架建立在Android系统的核心命令处,通过条例所述系统内部命令上下文意识框架的内容引入系统命令内部的上下文意识,由此实时动态任一应用程序的使用率。
[0108] 所述优化筛选单元302接收到所述状态获取单元301发送的所有应用程序对应的使用率之后,将所有应用程序按照对应的使用率的值由高到低进行排序,根据排列顺序将所有应用程序囊括在集合中,定义所述集合为初始应用集合,并将初始应用集合发送给自适应单元303。
[0109] 所述自适应单元303接收到所述优化筛选单元302发送的初始应用集合后,根据自适应机制调整所述初始应用集合,将调整后的初始应用集合定义为最终应用集合,按照所述最终应用集合对系统资源进行管理。
[0110] 本发明具体实施例提供的一种基于Android的系统资源管理装置,通过系统内部上下文意识获取应用程序的使用率,实现系统资源的管理,降低了对硬件的依赖性,丰富了交互,改善了多任务管理的用户体验。
[0111] 为了更好地理解与应用本发明提出的一种基于Android的系统资源管理方法和装置,本发明进行以下示例,且本发明不仅局限于以下示例。
[0112] 在Android 5Lollipop搭建并且实现上下文感知应用程序多任务调度管理机制框架。系统内部命令上下文意识框架CAMDroid在/system.bin/注册了一个扩展app_process。这个扩展启动进程会在classpath添加一个额外的jar包。通过实施在扩展app_process的hookMethodNative独立原生方法将CAMDroid注入的操作作为原生,并且将其与原生普通方法连接在一起。每一次被监听的方法被调用的时候,CAMDroid注入的方法同时也被执行。
[0113] 为了获取内存的实时动态状况,声明Activity Manager以及MemInfo。例如,通过CAMDroid框架的Helpers类的findClass方法找到最近应用类(recentActivityClass),再通过Helpers类的findAndHookMethod方法来监听最近应用类的onCreate方法并且在这里对此最近应用内存使用进行监督和计算。监听过程当中向Activity Manager请求该内容(context)。从此,通过调用MemInfoReader的方法getFreeSize、getTotalSize以及getCachedSize获取实时动态内存使用状况。
[0114] 以handleLoadPackage作为介入点,findAndHookMethod方法将监听activity android.app.Activity的startActivityForResult并且在startXActivity启动之前获取其参数和资源,即应用程序的子状态(Activities)。
[0115] 通过Helpers类的getObjectField方法监听最近应用程序堆栈。由此调用getTasks方法获取应用程序实时动态状况。采取getTasks里的size和get等方法统计应用程序数量、应用程序包域名、类别、安装运行占的内存资源大小、每一个状态跳转所需要的时间以及计算每一个应用程序和对应的每一个子状态的使用率。
[0116] 结合系统提供的Step和Counter detector、Tiltdetector、On Body detection、Pick up和Wake up等外部上下文信息意识来模拟用户的外部场景,进一步对应用程序集合进行筛选。
[0117] 由此可见,通过系统内部上下文意识结合外部上下文意识来人性化Android移动操作系统的应用程序多任务调度管理机制,不仅实现了用户与后台应用程序可以在不影响与前台应用程序进行交互的同时进行交互,以及实时动态更新后台程序的列表以及状态,和改善内存资源与CPU的使用状态。
[0118] 表1示出应用上下文意识对开发者和用户的要求,如表1所示,系统内部命令上下文意识框架CAMDroid对开发者的额外工作和用户的额外工作均无要求。
[0119] 表1 应用上下文意识对开发者和用户的要求
[0120]  需要开发者额外工作 需要用户额外工作(训练数据)
FALCON No Yes(长)
MARS No No
CAreDroid Yes No
CAMDroid No No
[0121] 表2示出系统内部上下文意识以及动态实时系统调整列表,如表2所示,系统内部命令上下文意识框架CAMDroid是其中唯一能够引进系统内部上下文意识并且对整个系统进行动态实时调整的。
[0122] 表2 系统内部上下文意识以及动态实时系统调整列表
[0123]  应用程序子状态(app activities) 动态实时系统调整
FALCON No No
MARS No No
CAreDroid No Yes(部分,只有app)
CAMDroid Yes Yes(整个OS)
[0124] 图4为本发明具体实施例中原生Android OS内存CPU资源变化示意图,图5为本发明具体实施例中带有CAMDroid Android OS内存CPU资源变化示意图。从图4和图5的比较可知,虽然内存使用增加了,但是由于动态实时更新后台任务列表,减少了系统频繁习惯性对内存进行的回收的进程的频率和数量。
[0125] 图6为本发明具体实施例中原生Android OS无CAMDroid电池统计示意图,图7为本发明具体实施例中带有CAMDroid Android OS电池统计示意图。图6和图7作为能量消耗的对比,CAMDroid降低了50%的能量损耗,并且减少了内存的写入访问次数,使得对系统开销比较大的wake_lock大大减少了。
[0126] 最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。