CN103902359B - 基于Android系统内存优化与应用调度方法及系统 - Google Patents
基于Android系统内存优化与应用调度方法及系统 Download PDFInfo
- Publication number
- CN103902359B CN103902359B CN201410124776.4A CN201410124776A CN103902359B CN 103902359 B CN103902359 B CN 103902359B CN 201410124776 A CN201410124776 A CN 201410124776A CN 103902359 B CN103902359 B CN 103902359B
- Authority
- CN
- China
- Prior art keywords
- stack
- application
- task stack
- task
- internal memory
- 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.)
- Active
Links
Abstract
本发明公开一种基于Android系统内存优化与应用调度方法及系统,该方法包括:利用安卓系统应用程序接口获取当前所有UI进程的任务信息列表,将其转化为对应任务栈;将相邻时间点任务栈进行比较,并将比较结果与预设用户行为与堆栈变化对应表进行比对,得出所对应的用户行为;根据所得出的用户行为对任务栈中的元素进行选择回收其内存,以及根据该用户行为进行应用程序的切换。本发明方法可实现在不影响用户操作和体验的前提下,对系统应用状态变化进行有效检测,并进一步实现内存的优化和用户行为分析,其简化了目前内存管理机制,有效避免了影响用户体验的误杀等操作,并且系统根据用户行为的分析实现了自身应用和系统界面切换的统一性。
Description
技术领域
本发明涉及内存管理技术领域,尤其涉及一种基于安卓系统的内存优化与应用调度方法及系统。
背景技术
现在安卓(Android)系统的发展迅速,越来越多的手机设备、电视厂商都引入了Android系统,但是对于设备厂商而言,深入定制Android系统是一件工作量大而又必须进行的工作。为利用Android系统实现自身设备的最大有效管理,通常需要的对Android自身源码进行大量改动,但对源码的改动工作通常既耗时又繁琐。
现有的Android机制中,用户进行的操作所产生的交互的activity会被任务栈收集,所述任务栈如图1所示,该栈包含了所有当前在系统中显示的UI界面的层次,栈底为首页(Laucher)10,栈中元素应用1/1(即指应用1)的activity组件11、应用2/2(即指应用2)的activity组件12,栈顶元素应用3/3的activity组件13表示展示在界面的最顶端的应用,也就是用户最关心的用户行为。在Android现有的机制中,只关心栈顶元素的变化,对于栈中的其他元素均不作处理,这就造成系统的很多内存将被消耗在用户不可见的行为上,造成资源的浪费。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种基于Android系统的存优化与应用调度方法及系统,旨在解决目前不能实现在不改动Android源码的前提下实现内存的有效管理的问题。
本发明的技术方案如下:
一种基于Android系统的内存优化与应用调度方法,其中,所述方法包括以下步骤:
利用Android系统的应用程序接口获取当前的所有UI进程的任务信息列表,并将其转化为对应的任务栈;
将相邻时间点的任务栈进行比较,并将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为;
根据所得出的用户行为对任务栈中的元素进行选择并回收其内存,以及根据该用户行为进行应用程序的切换。
所述的基于Android系统内存优化与应用调度方法,其中,所述利用Android系统的应用程序接口获取当前的所有UI进程的任务信息列表,并将其转化为对应的任务栈具体包括:
系统开机启动,创建用于检测系统中应用状态变化的线程;
所述线程根据Android系统的应用程序接口获取当前所有UI进程的任务信息列表;
将所得到的任务信息列表转化为Java 的栈数据结构。
所述的基于Android系统内存优化与应用调度方法,其中,所述将相邻时间点的任务栈进行比较,并将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为,具体包括:
当所述比较结果为相邻时间点的第一任务栈中不包含有第二任务栈中的栈顶元素时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户启动一新应用的行为;
当所述比较结果为相邻时间点的第一任务栈的栈顶元素不包含在第二任务栈中时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户退出一可视化应用的行为;
当所述比较结果为相邻时间点的第一任务栈与第二任务栈元素及其个数相同,但两者元素排列顺序不同时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户未发生行为变化;
当所述比较结果为相邻时间点的第一任务栈的非栈顶元素不包含在第二任务栈中时、则其与用户行为与堆栈变化对应表比对后,得出该不包含在第二任务栈中的非栈顶元素自动退出。
所述的基于Android系统的内存优化与应用调度方法,其中,所述根据所得出的用户行为对任务栈中的元素进行选择并回收其内存具体包括:
根据所述用户行为判断出任务栈中元素间的关联性,并根据该关联性设置相应的应用程序的优先级;
根据所得出的任务栈中元素间关联性及应用程序优先级对任务栈中的元素进行选择并回收其内存。
所述的基于Android系统的内存优化与应用调度方法,其中,当确定用户启动一新应用行为时,则弹出显示该新应用的交互界面;
当确定用户退出一可视化应用的行为时,检测并确定该应用所退出到的系统应用,弹出该系统应用的交互界面。
所述的基于Android系统的内存优化与应用调度方法,其中,所述根据该关联性设置相应的应用程序的优先级具体包括:
设置所述任务栈中栈顶元素对应的应用程序具有最高优先级,设置与所述栈顶元素具有关联行为的栈中元素所对应的应用程序具有次高优先级,设置与所述栈顶元素未发生关联行为的栈中元素所对应的应用程序具有比所述次高优先级更低的优先级。
所述的基于Android卓系统的内存优化与应用调度方法,其中,所述根据所得出的任务栈中元素间关联性及应用程序优先级对任务栈中的元素进行选择并回收其内存具体包括:
按照优先级的由高到低回收任务栈中的元素的内存,其中,当检测到任务栈中具有比次高优先级更低优先级所对应的栈中元素时,优先回收其内存;
当检测到任务栈中具有次高优先级对应的栈中元素时,同时检测系统内存是否达到阈值,若是,则回收该栈中元素的内存;
当检测到任务栈中栈顶元素所占内存一直在增长并且达到虚拟机的峰值时,回收该栈顶元素的内存。
所述的基于Android系统的内存优化与应用调度方法,其中,所述根据所得出的任务栈中元素间关联性及应用程序优先级对任务栈中的元素进行选择并回收其内存,还包括:
检测所述任务栈中的元素个数是否大于预设数量,若是,则直接将任务栈中与栈顶元素未发生关联行为的元素进行内存回收,其检测回收顺序是对任务栈的元素进行自下而上的检测回收。
一种基于Android系统的内存优化与应用调度系统,其中,所述系统包括:
任务栈创建模块,用于利用Android系统的应用程序接口获取当前的所有UI进程的任务信息列表,并将其转化为对应的任务栈;
比较模块,用于将相邻时间点的任务栈进行比较,并将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为;
内存回收模块,用于根据所述比较模块所得出的用户行为对任务栈中的元素进行选择并回收其内存。
切换模块,用于根据所述比较模块所得出的用户行为进行应用程序的切换。
有益效果:本发明提供一种基于Android系统的内存优化与应用调度方法及系统,该方法可实现在不影响用户操作和体验的前提下,对系统应用状态变化进行有效检测,并进一步实现内存的优化和用户行为分析,其简化了目前内存管理机制,有效避免了影响用户体验的误杀等操作,并且系统根据用户行为的分析实现了自身应用和系统界面切换的统一性。
附图说明
图1为具体实施例中Android系统任务栈的结构示意图。
图2为本发明的基于Android系统的内存优化与应用调度方法流程图。
图3为具体实施例中本发明的相邻时间点的任务栈比较情形一示意图。
图4为具体实施例中本发明的相邻时间点的任务栈比较情形二示意图。
图5为具体实施例中本发明的相邻时间点的任务栈比较情形三示意图。
图6为具体实施例中本发明的相邻时间点的任务栈比较情形四示意图。
图7为具体实施例中本发明基于Android系统的内存优化与应用调度方法流程图。
图8为具体实施例中本发明基于Android系统的内存优化与应用调度系统原理框图。
具体实施方式
本发明提供一种基于Android系统内存优化与应用调度方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图2所示的一种基于Android系统的内存优化与应用调度方法,其中,所述方法包括以下步骤:
S100、利用Android系统的应用程序接口获取当前的所有UI进程的任务信息列表,并将其转化为对应的任务栈。
进一步地,上述步骤具体为:
系统开机启动,创建用于检测系统中应用状态变化的线程。即该线程所处的进程应该在系统开机的时候就启动,这样可以检测系统任何时候的应用启动和退出等状态变化等情况。通常情况下,该线程可以在系统的管理Service中启动,然后将一些重要信息广播出去。当然,该广播并不仅限于Android广播的方式。
所述线程根据安卓系统的应用程序接口获取当前所有UI进程的任务信息列表。
将所得到的任务信息列表转化为Java 的栈数据结构。
S200、将相邻时间点的任务栈进行比较,并将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为。
S300、根据所得出的用户行为对任务栈中的元素进行选择并回收其内存,以及根据该用户行为进行应用程序的切换。
较佳实施例中,所述将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为,根据所得出的用户行为对任务栈中的元素进行选择并回收其内存具体为:
将比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为,并根据该用户行为判断出任务栈中元素间的关联性,并根据该关联性设置相应的应用程序的优先级;
根据所得出的任务栈中元素间关联性及应用程序优先级对任务栈中的元素进行选择并回收其内存。
其中,所述根据该关联性设置相应的应用程序的优先级具体为:
设置所述任务栈中栈顶元素对应的应用程序具有最高优先级,设置与所述栈顶元素具有关联行为的栈中元素所对应的应用程序具有次高优先级,设置与所述栈顶元素未发生关联行为的栈中元素所对应的应用程序具有比所述次高优先级更低的优先级。
其中,将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为进一步地包括:
当所述比较结果为相邻时间点的第一任务栈中不包含有第二任务栈中的栈顶元素时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户启动一新应用的行为。
当所述比较结果为相邻时间点的第一任务栈的栈顶元素不包含在第二任务栈中时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户退出一可视化应用的行为。
当所述比较结果为相邻时间点的第一任务栈与第二任务栈元素及其个数相同,但两者元素排列顺序不同时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户未发生行为变化。
当所述比较结果为相邻时间点的第一任务栈的非栈顶元素不包含在第二任务栈中时、则其与用户行为与堆栈变化对应表比对后,得出该不包含在第二任务栈中的非栈顶元素自动退出。
具体的,比较两个相邻时间点的任务栈中元素的不同之处,主要进行四个分支的判断,即如图3-6所示的4种情形。这是本发明提出的一个重要判断依据,有效利用了相邻栈的相似性和不同性,将复杂的栈结构原子化,所有的用户行为和系统底层的操作均可表现为图中前四种情形的模板。
如图3所示,A栈与B栈为相邻时间点的两任务栈,A栈中不包含有B栈中栈顶元素应用3/3的activity组件13,这是最常见的一种情况,代表用户启动了一个应用,启动的应用的信息可以通过Android的标准API获取。如图4所示,A栈中栈顶元素应用3/3的activity组件13不包含在B栈中,这也是最常见的一种情况,代表用户退出了一个可视化的应用,退出的应用信息页同样可以从Android的标准API获取。如图5所示,A栈和B栈的元素个数相同,并且元素也相同,即都包含应用1/1的activity组件11、应用2/2的activity组件12、应用3/3的activity组件13,但是顺序有一定的改变,该改变必定是由于交换位置的元素的关联性引起的,则确定用户行为对于系统而言,未发生行为的变化。如图6所示,A栈中的非栈顶元素应用2/2的activity组件12不包含在B栈中,表示A栈中消失的元素由于系统或者自身缘故退出,可以分析为A栈中的非栈顶元素进入了onStop状态自身退出或是直接被系统的其他机制回首。
另外,B栈中不可能包含有两个或者两个以上A栈中不具有的元素,并且当B栈中含有A栈中不存在的元素时,该元素一定存在于B栈的栈顶。其所述的情形也必然属于图3-6所示的情形之一,因此用户和系统的所有操作行为都可以通过上述四种情形进行分析。上述四种情形被以模板的形式设置在用户行为与堆栈变化对应表中,任何相邻时间点的堆栈变化,都可以通过与用户行为与堆栈变化对应表对比对用户行为进行有效的分析。较佳的是,所谓相邻时间点的任务栈,其时间间隔应该较短,时间间隔在100ms左右为宜。
因此通过对相邻时间点的任务栈的比较结果的分析,不仅可分析出的进程的启动和退出,还可进一步进行用户行为分析,这样就可得到用户在某个时间点,进入某个应用,或者在某个时间点退出某个应用;也同样可以得到在某个时间点系统回收哪些非必要的进程。总之,上述步骤可实现Android应用进入退出的有效检测,并对用户的行为进行有效分析。
进一步地,根据所得出的用户行为选择元素其实是根据该用户行为判断出任务栈中元素间的关联性,并根据该关联性设置相应的应用程序的优先级,之后根据所得出的任务栈中元素间关联性及应用程序优先级对任务栈中的元素进行选择并回收其内存。
其中,根据所得出的任务栈中元素间关联性及应用程序优先级对任务栈中的元素进行选择并回收其内存具体为:
按照优先级的由高到低回收任务栈中的元素的内存,其中,当检测到任务栈中具有比次高优先级更低优先级所对应的栈中元素时,优先回收其内存。
当检测到任务栈中具有次高优先级对应的栈中元素时,同时检测系统内存是否达到阈值,若是,则回收该栈中元素的内存。
当检测到任务栈中栈顶元素所占内存一直在增长并且达到虚拟机的峰值时,回收该栈顶元素的内存。
本发明不违背Android本身的优先级规则,最顶层的应用具有最高优先级,由于栈顶元素的应用直接影响用户的体验,对其内存和性能的使用不做预警,除非其内存使用达到虚拟机的峰值,否则不做限制。不包含栈顶元素的栈中元素,若经检测发现其与栈顶元素发生过关联行为,则赋予其内存管理的次高优先级或次高权限,该类应用如果直接回收其内存,又可能会影响用户的体验,因此需要系统检测这类元素所找内存是否达到预设阈值,当其系统内存和性能达到该阈值时,对其进行释放。而未与栈顶元素发生过关联行为的栈中其他元素,,则直接进行内存的回收。既不会影响用户的体验,也实现了内存的优先回收。
较佳实施例中,检测所述任务栈中的元素个数是否大于预设数量,若是,则直接将任务栈中与栈顶元素未发生关联行为的元素进行内存回收,其检测回收顺序是对任务栈的元素进行自下而上的检测回收。
即任务栈中的元素个数大于某一数值时,可以直接将栈中与栈顶元素未发生关联的元素自下向上进行直接回收,直至遇到栈顶元素或与栈顶元素发生关联的元素为止。该数值可以根据具体系统所处的硬件性能进行评估,一般为3较佳,如果硬件性能非常好,可以适当提高。
上述对于任务栈中的应用的处理可简单表述为:将非必要的或者优先级较低的进程在系统资源紧张时直接kill掉,以便回收内存。另外系统可检测较低进程的内存使用情况,若检测到相应进程的内存一直在增长,那么该进程很大程度上发生了内存泄露,当检测到该进程占用的内存达到虚拟机的峰值时,则直接将其kill掉。这样可以尽早确保系统资源的不被浪费和消耗。
采用如上规则的内存管理,可以极大的简化内存管理的机制,并且有效避开了影响用户体验的误杀等操作;同时也在上层丰富和细化了Android本身机制关于内存的管理和实用策略,不再是简单的进行非顶层应用的回收操作。
另外一方面,根据该用户行为进行应用程序的切换其实是根据之前所得出的用户行为及当前任务栈确定系统中相应应用程序的状态变化情况,并根据该状态变化情况进行应用程序切换。
具体地,当确定用户启动一新应用行为时,则弹出显示该新应用的交互界面。
当确定用户退出一可视化应用的行为时,检测并确定该应用所退出到的系统应用,弹出该系统应用的交互界面。
本发明利用相邻时间点的任务栈的比较及其分析,可确切了解某个应用的状态变化,从而可系统调度某个应用的交互操作。这一点尤其适用于电视等大屏的Android操作系统。因为对于电视等大屏操作系统而言,主要依赖于遥控器、手机或者其他远程遥控装置,这样的遥控简单但是不够方便。如果UI(用户界面)交互不能完整和实时的呈现给用户,那么对于用户而言将是一件非常繁琐的事情。而本发明的系统可实时检测到某个应用进入了哪个应用,或者从某一应用退出到了某一系统应用,从而可及时弹出预置的交互UI,而不是不再单纯的依赖自身应用的状态变化,是本发明的系统具有了一个系统级的UI交互调度。
举例说明,在电视系统中出现如图4的情形二,若应用3是未知的第三方应用,不需要响应遥控器的菜单键,而应用2和应用1是系统自身设计的内置应用,其需要响应遥控器的菜单键,并且自身底下的应用不进入黑屏状态,则在此种情况下,本发明系统根据对用户行为和当前的任务栈的分析,分析出当前每一个应用应该进行的操作。不再局限于Android本身的Activity的状态变化,同时Android自身的状态变化机制只能响应当前应用2的进程,而不能对底层的应用1和Lanucher有状态变化的响应。并且,对于Android的应用而言,目前是无法完全按照一个Activity的状态变化来进行一些界面交互的管理的,因为一个应用可能存在多个Activity,如果对每一个Activity的状态都在进程间进行管理,将是一件耗时但又不讨好的事情。但本发明的机制与此不同,系统可及时确认A栈中的元素1的哪个Activity进入了什么状态,并可设置通知机制来实现应用状态变化的通知,实现了状态变化的准确判断。从而最终实现各个应用间切换的界面交互管理。另外,本发明方法执行时只需要消耗极小的系统性能,从而能够在不影响用户操作和体验的情况下实施本发明的方法。
如图7所示的基于Android系统的内存优化与应用调度方法具体实施例中,其步骤如下:
S1、相邻时间点A的系统信息。根据Android的接口获取相邻时间点A的系统信息。
S2、获取当前的任务信息列表。
S3、将任务信息列表转换为栈A。将对应的任务信息列表转换为Java的栈数据结构,即任务栈A。
S4、相邻时间点B的系统信息。同理,根据Android的接口获取相邻时间点B的系统信息。
S5、获取当前的任务信息列表。
S6、将任务信息列表转换为栈B。即任务栈B。
S7、根据规则分析栈A和栈B的相似与不同。分析栈A与栈B的不同属于上述的四种情形中的哪一种,从而确认栈A和栈B的下一步分析依据。
S8、得到当前用户的行为。根据之前得到的比较结果并通过与用户行为与堆栈变化对应表对比,分析出当前用户行为。
S9、根据用户行为优化内存。
S10、根据用户行为进行交互切换。
通过本发明的方法实现对用户操作行为的准确判断,进而针对用户当前的行为实现系统的应用的相互切换机制,尤其适用于一个深度定制和开发的Android系统。目前在大部分的深度定制系统中,各个应用切换的关联和管理工作,都是进行framework层的更改或者更深层次的linux做特殊支持才可以做到。而这是一件非常困难和麻烦的事情, 虽然从表面看完成了各个应用的状态管理,但是违背了Android本身作为开放平台的统一通用性,很大程度上阻碍了该平台向外开放的脚步。而本发明方案进行状态管理,系统可及时了解当前用户的行为,并且对于已知自身系统的应用做定制化处理,用来达到自身应用和系统界面切换的统一性。
如图8所示的一种基于Android系统的内存优化与应用调度系统,其中,所述系统包括:
任务栈创建模块100,用于利用Android系统的应用程序接口获取当前的所有UI进程的任务信息列表,并将其转化为对应的任务栈,具体如步骤S100所述。
比较模块200,用于将相邻时间点的任务栈进行比较,并将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为,具体如步骤S200所述。
内存回收模块300,用于根据所述比较模块所得出的用户行为对任务栈中的元素进行选择并回收其内存,具体如步骤S300所述。
切换模块400,用于根据所述比较模块所得出的用户行为进行应用程序的切换,具体如步骤S300所述。
本发明提供一种基于Android系统内存优化与应用调度方法及系统,该方法可实现在不影响用户操作和体验的前提下,对系统应用状态变化进行有效检测,并进一步实现内存的优化和用户行为分析,其简化了目前内存管理机制,有效避免了影响用户体验的误杀等操作,并且系统根据用户行为的分析实现了自身应用和系统界面切换的统一性。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (7)
1.一种基于Android系统内存优化与应用调度方法,其特征在于,所述方法包括以下步骤:
利用Android系统的应用程序接口获取当前的所有UI进程的任务信息列表,并将其转化为对应的任务栈;
将相邻时间点的任务栈进行比较,并将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为;
根据所得出的用户行为对任务栈中的元素进行选择并回收其内存,以及根据该用户行为进行应用程序的切换;
所述根据所得出的用户行为对任务栈中的元素进行选择并回收其内存具体包括:
根据所述用户行为判断出任务栈中元素间的关联性,并根据该关联性设置相应的应用程序的优先级;
根据所得出的任务栈中元素间关联性及应用程序优先级对任务栈中的元素进行选择并回收其内存;
所述将相邻时间点的任务栈进行比较,并将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为,具体包括:
当所述比较结果为相邻时间点的第一任务栈中不包含有第二任务栈中的栈顶元素时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户启动一新应用的行为;
当所述比较结果为相邻时间点的第一任务栈的栈顶元素不包含在第二任务栈中时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户退出一可视化应用的行为;
当所述比较结果为相邻时间点的第一任务栈与第二任务栈元素及其个数相同,但两者元素排列顺序不同时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户未发生行为变化;
当所述比较结果为相邻时间点的第一任务栈的非栈顶元素不包含在第二任务栈中时、则其与用户行为与堆栈变化对应表比对后,得出该不包含在第二任务栈中的非栈顶元素自动退出;
基于Android系统内存优化与应用调度方法有效利用了相邻栈的相似性和不同性,将复杂的栈结构原子化,所有的用户行为和系统底层的操作均可表现上述四种情形的模板。
2.根据权利要求1所述的基于Android系统内存优化与应用调度方法,其特征在于,所述利用Android系统的应用程序接口获取当前的所有UI进程的任务信息列表,并将其转化为对应的任务栈具体包括:
系统开机启动,创建用于检测系统中应用状态变化的线程;
所述线程根据Android系统的应用程序接口获取当前所有UI进程的任务信息列表;
将所得到的任务信息列表转化为Java 的栈数据结构。
3.根据权利要求1所述的基于Android系统内存优化与应用调度方法,其特征在于,当确定用户启动一新应用行为时,则弹出显示该新应用的交互界面;
当确定用户退出一可视化应用的行为时,检测并确定该应用所退出到的系统应用,弹出该系统应用的交互界面。
4.根据权利要求1所述的基于Android系统内存优化与应用调度方法,其特征在于,所述根据该关联性设置相应的应用程序的优先级具体包括:
设置所述任务栈中栈顶元素对应的应用程序具有最高优先级,设置与所述栈顶元素具有关联行为的栈中元素所对应的应用程序具有次高优先级,设置与所述栈顶元素未发生关联行为的栈中元素所对应的应用程序具有比所述次高优先级更低的优先级。
5.根据权利要求4所述的基于Android系统内存优化与应用调度方法,其特征在于,所述根据所得出的任务栈中元素间关联性及应用程序优先级对任务栈中的元素进行选择并回收其内存具体包括:
按照优先级的由高到低回收任务栈中的元素的内存,其中,当检测到任务栈中具有比次高优先级更低优先级所对应的栈中元素时,优先回收其内存;
当检测到任务栈中具有次高优先级对应的栈中元素时,同时检测系统内存是否达到阈值,若是,则回收该栈中元素的内存;
当检测到任务栈中栈顶元素所占内存一直在增长并且达到虚拟机的峰值时,回收该栈顶元素的内存。
6.根据权利要求5所述的基于Android系统内存优化与应用调度方法,其特征在于,所述根据所得出的任务栈中元素间关联性及应用程序优先级对任务栈中的元素进行选择并回收其内存,还包括:
检测所述任务栈中的元素个数是否大于预设数量,若是,则直接将任务栈中与栈顶元素未发生关联行为的元素进行内存回收,其检测回收顺序是对任务栈的元素进行自下而上的检测回收。
7.一种基于Android系统内存优化与应用调度系统,其特征在于,所述系统包括:
任务栈创建模块,用于利用Android系统应用程序接口获取当前的所有UI进程的任务信息列表,并将其转化为对应的任务栈;
比较模块,用于将相邻时间点的任务栈进行比较,并将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为;
内存回收模块,用于根据所述比较模块所得出的用户行为对任务栈中的元素进行选择并回收其内存;
切换模块,用于根据所述比较模块所得出的用户行为进行应用程序的切换;
所述根据所得出的用户行为对任务栈中的元素进行选择并回收其内存具体包括:
根据所述用户行为判断出任务栈中元素间的关联性,并根据该关联性设置相应的应用程序的优先级;
根据所得出的任务栈中元素间关联性及应用程序优先级对任务栈中的元素进行选择并回收其内存;
所述将相邻时间点的任务栈进行比较,并将所述比较结果与预设的用户行为与堆栈变化对应表进行比对,得出该比较结果所对应的用户行为,具体包括:
当所述比较结果为相邻时间点的第一任务栈中不包含有第二任务栈中的栈顶元素时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户启动一新应用的行为;
当所述比较结果为相邻时间点的第一任务栈的栈顶元素不包含在第二任务栈中时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户退出一可视化应用的行为;
当所述比较结果为相邻时间点的第一任务栈与第二任务栈元素及其个数相同,但两者元素排列顺序不同时、则其与用户行为与堆栈变化对应表比对后,得出该比较结果对应用户未发生行为变化;
当所述比较结果为相邻时间点的第一任务栈的非栈顶元素不包含在第二任务栈中时、则其与用户行为与堆栈变化对应表比对后,得出该不包含在第二任务栈中的非栈顶元素自动退出;
基于Android系统内存优化与应用调度方法有效利用了相邻栈的相似性和不同性,将复杂的栈结构原子化,所有的用户行为和系统底层的操作均可表现上述四种情形的模板。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410124776.4A CN103902359B (zh) | 2014-03-31 | 2014-03-31 | 基于Android系统内存优化与应用调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410124776.4A CN103902359B (zh) | 2014-03-31 | 2014-03-31 | 基于Android系统内存优化与应用调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103902359A CN103902359A (zh) | 2014-07-02 |
CN103902359B true CN103902359B (zh) | 2018-02-23 |
Family
ID=50993698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410124776.4A Active CN103902359B (zh) | 2014-03-31 | 2014-03-31 | 基于Android系统内存优化与应用调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103902359B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298569A (zh) * | 2014-09-30 | 2015-01-21 | 北京金山安全软件有限公司 | 应用程序运行异常的检测方法、装置和移动终端 |
CN104461746B (zh) * | 2014-12-30 | 2018-07-03 | 中科创达软件股份有限公司 | 一种基于Android系统的内存空间优化方法及系统 |
CN105138402B (zh) * | 2015-08-25 | 2019-02-15 | 海信集团有限公司 | 一种应用进程内存释放的优先级调整方法及装置 |
CN106610892B (zh) * | 2015-10-23 | 2020-12-22 | 腾讯科技(深圳)有限公司 | 内存泄漏检测方法和装置 |
CN105573811B (zh) * | 2015-12-15 | 2018-12-07 | 广州品唯软件有限公司 | 系统内存控制方法及其系统 |
CN105808447B (zh) * | 2016-03-29 | 2019-01-29 | 海信集团有限公司 | 一种终端设备的内存回收方法和装置 |
CN110297691A (zh) * | 2019-07-03 | 2019-10-01 | 四川长虹电器股份有限公司 | 一种优化Android系统ART虚拟机内存管理的方法 |
CN112445606A (zh) * | 2019-08-30 | 2021-03-05 | 华为技术有限公司 | 内存回收方法及装置 |
CN111538574B (zh) * | 2020-03-27 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 任务堆栈的管理方法、装置、终端及存储介质 |
CN111966472B (zh) * | 2020-07-02 | 2023-09-26 | 佛山科学技术学院 | 一种工业实时操作系统的进程调度方法及系统 |
CN113806030A (zh) * | 2020-07-24 | 2021-12-17 | 荣耀终端有限公司 | 应用的调度方法及电子设备 |
CN113031921A (zh) * | 2020-12-31 | 2021-06-25 | 南京汉隆科技有限公司 | 一种网络话机应用软件的开发框架及实现方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102984580A (zh) * | 2012-11-12 | 2013-03-20 | 北京奇虎科技有限公司 | 内存清理方法及系统 |
CN103024538A (zh) * | 2012-11-12 | 2013-04-03 | 北京奇虎科技有限公司 | 内存管理方法及系统 |
CN103324500A (zh) * | 2013-05-06 | 2013-09-25 | 广州市动景计算机科技有限公司 | 一种回收内存的方法及装置 |
CN103617129A (zh) * | 2013-12-10 | 2014-03-05 | 中科创达软件股份有限公司 | 一种内存处理的方法及装置 |
CN103631661A (zh) * | 2013-11-27 | 2014-03-12 | 青岛海信电器股份有限公司 | 一种内存管理方法和装置 |
-
2014
- 2014-03-31 CN CN201410124776.4A patent/CN103902359B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102984580A (zh) * | 2012-11-12 | 2013-03-20 | 北京奇虎科技有限公司 | 内存清理方法及系统 |
CN103024538A (zh) * | 2012-11-12 | 2013-04-03 | 北京奇虎科技有限公司 | 内存管理方法及系统 |
CN103324500A (zh) * | 2013-05-06 | 2013-09-25 | 广州市动景计算机科技有限公司 | 一种回收内存的方法及装置 |
CN103631661A (zh) * | 2013-11-27 | 2014-03-12 | 青岛海信电器股份有限公司 | 一种内存管理方法和装置 |
CN103617129A (zh) * | 2013-12-10 | 2014-03-05 | 中科创达软件股份有限公司 | 一种内存处理的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103902359A (zh) | 2014-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103902359B (zh) | 基于Android系统内存优化与应用调度方法及系统 | |
CN106127030A (zh) | 一种界面控制方法和装置 | |
CN106959879B (zh) | 一种控制方法及电子设备 | |
CN106096425A (zh) | 一种系统权限的开启方法、装置及设备 | |
US20170293421A1 (en) | Interface Display Method and Apparatus | |
CN105867818A (zh) | 一种终端交互控制装置 | |
CN104424432B (zh) | 一种信息处理方法及电子设备 | |
CN106708533A (zh) | 应用程序切换方法和移动终端 | |
CN105740669A (zh) | 一种锁屏界面处理方法及终端 | |
CN102937913B (zh) | 一种管理默认应用程序的方法及装置 | |
CN104903856A (zh) | 应用图标自适应调整方法和终端 | |
CN106371901A (zh) | 一种应用程序的切换方法和装置 | |
CN108595236A (zh) | 一种防止子线程进行用户界面操作的方法及装置 | |
CN105743981B (zh) | 监控方法、监控终端和监控系统 | |
CN111459758B (zh) | 一种应用信息的显示方法、装置、电子设备及存储介质 | |
CN104932821A (zh) | 一种智能终端操作界面的显示方法及智能终端 | |
CN109144447A (zh) | 分屏窗口调节方法、装置、存储介质及电子设备 | |
CN115037971A (zh) | 一种控件有效性的检测方法及显示设备 | |
CN104090746A (zh) | 一种基于安卓系统的应用管理方法及其装置 | |
CN113867585A (zh) | 界面显示方法、装置、电子设备和存储介质 | |
CN104793889A (zh) | 一种应用于触控屏的新建、解散文件夹方法及系统 | |
CN106201393A (zh) | 信息处理方法及电子设备 | |
CN106941569A (zh) | 一种显示数据处理方法及装置 | |
CN105786570A (zh) | 程序开机自启动管理方法及装置 | |
CN110850941A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |