一种应用软件内存占用优化方法及系统与流程

文档序号:11250673阅读:377来源:国知局
一种应用软件内存占用优化方法及系统与流程

本发明涉及计算机技术领域,更具体地,涉及一种应用软件内存占用优化方法及系统。



背景技术:

随着互联网技术的不断进步,越来越多、功能越来越复杂的应用软件被程序员开发出来,而如何将一个应用软件做的更细致、占用内存更小,就成了产品之间竞争的关键所在。在应用软件运行过程中,当所述应用程序中的列表组件需要滚动展现大量列表数据时,应用程序的内存占用会大幅度的增长。



技术实现要素:

本发明为克服上述问题或者至少部分地解决上述问题,提供一种移动端应用程序内存占用优化方法及系统。

根据本发明的一个方面,提供一种移动端应用程序内存占用优化方法,包括:

步骤1,检测当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元是否即将离开屏幕的显示区域;

步骤2,将检测到的即将离开屏幕的显示区域的单元进行反渲染操作。

进一步,所述步骤1进一步包括:

s11,检测当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元的偏移量,基于所述偏移量计算所述单元距离与其移动方向垂直的边线的距离值;

s12,基于所述步骤s11得到的距离值,判断相应单元是否即将离开屏幕的显示区域。

进一步,所述s11中检测所述移动端应用程序内正在被屏幕显示的列表中单元的偏移量的步骤进一步包括检测:

通过监听所述移动端应用程序中的onscroll事件,获取所述移动端应用程序内正在被屏幕显示的列表中单元的偏移量。

进一步,所述s11中基于所述偏移量计算所述单元距离与其移动方向垂直的边线的距离值的步骤进一步包括:获得所述单元在屏幕坐标系中的x坐标或y坐标与该单元的偏移量相加后的绝对值,为所述单元距离与其移动方向垂直的边线的距离值。

进一步,所述步骤s12进一步包括:当所述距离值在预设范围内时,获得其对应的单元即将离开屏幕的显示区域的结果。

进一步,所述方法还包括:

检测当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内屏幕的显示区域是否有新进入的列表单元,当有新的列表单元进入显示区域,对所述列表单元进行渲染操作。

进一步,所述步骤s12中的预设范围为:

当所述单元沿屏幕y轴方向移动时,所述预设范围为小于等于0或大于等于屏幕高度值;

当所述单元沿屏幕x轴方向移动时,所述预设范围为小于等于0或大于等于屏幕宽度值。

进一步,所述步骤2中反渲染操作包括:对单元中的文字进行格式信息的消除和/或对单元中图片进行最小化处理。

进一步,所述移动端应用程序内存占用优化方法基于react-native框架结构实现。

根据本发明另一个方面,提供一种移动端应用程序内存占用优化系统,包括:

检测模块,用于检测当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元是否即将离开屏幕的显示区域;

优化模块,用于将检测到的即将离开屏幕的显示区域的单元进行反渲染操作。

本申请提出一种应用软件内存占用优化方法及系统,本发明所述方法当移动端应用程序检测到滚动事件时,检测移动端应用程序内正在被屏幕显示的列表中单元是否即将离开屏幕的显示区域;将检测到的即将离开屏幕的显示区域的单元进行反渲染操作。本发明能够使得包含列表的移动端应用程序的性能大大的提升,让移动端应用程序在使用的过程中占用更少的内存。

附图说明

图1为根据本发明实施例一种移动端应用程序内存占用优化方法的总体流程示意图;

图2为根据本发明实施例一种移动端应用程序内存占用优化方法的示意图;

图3为根据本发明实施例一种移动端应用程序内存占用优化系统的总体框架示意图;

图4为根据本发明实施例一种移动端应用程序内存占用优化方法的设备的结构框架示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

首先对于本发明下述提到的各具体实施例中的名词解析说明。

x坐标:在显示屏幕的平面中,利用坐标系来表示屏幕中具体位置的平面位置,x坐标为纵轴坐标值;

y坐标为纵轴坐标值;

偏移量:表示在显示屏幕的移动方向与距离,所述偏移量为矢量:当所述单元朝x或y轴正方向移动时,所述偏移量为正值;当所述单元朝x或t轴负方向移动时,所述偏移量为负值。

图1中,示出本发明一个具体实施例中,一种移动端应用程序内存占用优化方法整体流程示意图。总体上,包括:

步骤1,当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元是否即将离开屏幕的显示区域;

步骤2,将检测到的即将离开屏幕的显示区域的单元进行反渲染操作。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化方法,所述步骤1进一步包括:

s11,当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元的偏移量,基于所述偏移量计算所述单元距离与其移动方向垂直的边线的距离值;

s12,基于所述步骤s11得到的距离值,判断相应单元是否即将离开屏幕的显示区域。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化方法,所述s11中当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元的偏移量的步骤进一步包括:

通过监听所述移动端应用程序中的onscroll事件,获取所述移动端应用程序内正在被屏幕显示的列表中单元的偏移量。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化方法,所述s11中基于所述偏移量计算所述单元距离与其移动方向垂直的边线的距离值的步骤进一步包括:获得所述单元在屏幕坐标系中的x坐标或y坐标与该单元的偏移量相加后的绝对值,为所述单元距离与其移动方向垂直的边线的距离值。

在本发明上述具体实施例中,所述该单元的偏移量为矢量:当所述单元朝x或y轴正方向移动时,所述偏移量为正值;当所述单元朝x或y轴负方向移动时,所述偏移量为负值。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化方法,所述步骤s12进一步包括:当所述距离值在预设范围内时,获得其对应的单元即将离开屏幕的显示区域的结果。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化方法,所述方法还包括:

当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内屏幕的显示区域是否有新进入的列表单元,当有新的列表单元进入显示区域,对所述列表单元进行渲染操作。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化方法,所述步骤s12中的预设范围为:

当所述单元沿屏幕y轴方向移动时,所述预设范围为小于等于0或大于等于屏幕高度值;

当所述单元沿屏幕x轴方向移动时,所述预设范围小于等于0或大于等于屏幕宽度值。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化方法,所述步骤2中反渲染操作包括:对单元中的文字进行格式信息的消除和/或对单元中图片进行最小化处理。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化方法,所述移动端应用程序内存占用优化方法基于react-native框架结构实现。

在本发明又一个具体实施例中,一种移动端应用程序内存占用优化方法。所述实施例方法详细如下:

cell:列表的组成部分,是列表的一个单元。

现有技术中,如图2所述,在列表向上滑动的过程中,最顶部的cell1被顶出了屏幕外方,最底部即将创建一个新的cell5。

图2中的这个cell1虽然不在屏幕上面显示了,但是还是存在于app的内存之中,如果滑动的比较快,系统会不停的创建更多的新的cell,而且cell1、cell2…都将存在于内存之中,那么内存就会暴增。想要解决这个问题,必须对屏幕外的cell做一些处理,让他占据最小的内存。

本具体实施例提供的一种移动端应用程序内存占用优化方法,包括以下步骤:

1、之前在cell被渲染的过程中,系统没有做任何的操作,也就是说,列表中的每个cell,都被最大程度的渲染了出来,现在需要在渲染之前先进行判断,是否可以渲染。

上述步骤里,通过定义一个布尔型变量visible,通过该变量来区分cell是否需要最小化。

2、为了能够最精确地控制变量visible的值,在最合适的时机将visible的值进行改变,需要通过一些计算来达到目的。

(1)为了在滑动过程中,可以准确的抓住cell即将消失和即将出现的那个时间点,需要不断的去拿到cell的位置。这里,可以在列表初始化的时候实现onscroll方法:

<listviewonscroll={this.onscrolldrag}/>

然后在onscrolldrag方法内部,可以通过e.nativeevent.contentoffset.y拿到offset,即为列表相对于屏幕的偏移量。用当前cell在列表的坐标系中的y值减去offset,就可以得到cell距离屏幕顶部的高度。

通过监听onscroll方法,只要手指滑动了屏幕,就可以监听到这个事件,这样,可以在cell即将出现的一瞬间将他绘制出来,也可以在cell消失的一瞬间将他最小化。这样就可以最大程度的完成内存的优化。

(2)用一个浮点数distance来记录该值。

当distance小于或等于0的时候,代表cell即将离开屏幕,滚动到屏幕上方,此时,此时将visible设置成false;

当distance大于或等于屏幕的高度的时候,代表cell即将离开屏幕,滚动到屏幕下方,此时将visible设置成false;

当distance在0到屏幕高度这个区间范围之内的时候,将visible设置成true。

通过该算法,可以很容易的判断出哪些cell是在屏幕外部,哪些cell是在屏幕内部。

3、现在需要对cell进行一些处理,让他在屏幕外部的时候占据最小的内存,因为此时用户看不到该cell,所以,可以把他进行最小化,退化成一个最基本的控件。

因为用户看不到屏幕外部的内容,用户不会关心外部的内容是个什么样子,所以针对于屏幕外部的元素,让他变成最小的元素,占据最小的内存,不用去渲染那些图片、文字之类的东西。在app中,image(图片)组件是最消耗内存的,他所占的内存是普通的一个空白的view的十几倍,特别是一些比较高清的图片的时候。

4、为了尽可能快的将屏幕外部的cell退化成一个基本的view,可以在cell的visible状态一发生改变的时候,对其进行重新渲染。

首先,将visible放入状态机中,这样就可以监听到visible的值改变的事件,只要visible一改变,cell就会重新渲染。所以,在渲染cell的时候,需要先判断visible的值,再进行渲染:

(1)如果visible为true,代表他是在屏幕内部,需要正常的渲染他,让用户看到完整的cell

(2)如果visible为false,代表他是在屏幕外部,此时,只需将cell设置一下宽高,不做任何其他的操作。即,把他当成一个最基本的view。

将visible放入状态机,能方便在改变visible的值的时候第一时间刷新cell的内容,将屏幕外的cell给最小化。状态机是react-native提供给开发者的一个容器,放入状态机的东西,只要属性发生改变,就会重新渲染视图。

本具体实施例的技术方案,尽可能的让列表占用更少的内存,特别是在展现大量数据的时候。facebook提供了很好的组件listview来展现列表,但是并没有提供很好的方法来解决内存优化的问题,而最消耗内存的部分,往往就是那些图片组件和文字组件,在用户看不到的地方,不用将图片、文字这些东西呈现出来,只需要在合适的时机把他们渲染出来。通过以上方法,能让列表的性能大大的提升,让app在使用的过程中占用更少的内存。

如图3,在本发明另一个具体实施例中,一种移动端应用程序内存占用优化系统,包括:

检测模块a1,用于当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元是否即将离开屏幕的显示区域;

优化模块a2,用于将检测到的即将离开屏幕的显示区域的单元进行反渲染操作。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化系统,所述检测模块还用于:

s11,当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元的偏移量,基于所述偏移量计算所述单元距离与其移动方向垂直的边线的距离值;

s12,基于所述步骤s11得到的距离值,判断相应单元是否即将离开屏幕的显示区域。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化系统,所述检测模块还用于:通过监听所述移动端应用程序中的onscroll事件,获取所述移动端应用程序内正在被屏幕显示的列表中单元的偏移量。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化系统,所述检测模块还用于:获得所述单元在屏幕坐标系中的x坐标或y坐标与该单元的偏移量相加后的绝对值,为所述单元距离与其移动方向垂直的边线的距离值。垂直的边线的距离值

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化系统,所述优化模块还用于:当所述距离值在预设范围内时,获得其对应的单元即将离开屏幕的显示区域的结果。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化系统,还包括渲染模块,用于当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内屏幕的显示区域是否有新进入的列表单元,当有新的列表单元进入显示区域,对所述列表单元进行渲染操作。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化系统,预设范围为:

当所述单元沿屏幕y轴方向移动时,所述预设范围为小于等于0或大于等于屏幕高度值;

当所述单元沿屏幕x轴方向移动时,所述预设范围小于等于0或大于等于屏幕宽度值。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化系统,还包括渲染模块,用于对单元中的文字进行格式信息的消除和/或对单元中图片进行最小化处理。

在本发明另一个具体实施例中,一种移动端应用程序内存占用优化系统,所述移动端应用程序内存占用优化系统基于react-native框架结构实现

图4示出本申请实施例的移动端应用程序内存占用优化方法的设备的结构框图。

参照图4,所述移动端应用程序内存占用优化方法的设备,包括:处理器(processor)401、存储器(memory)402、通信接口(communicationsinterface)403和总线404;

其中,

所述处理器401、存储器402、通信接口403通过所述总线404完成相互间的通信;

所述通信接口403用于该设备与移动端应用程序内存占用优化方法的通信设备之间的信息传输;

所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:步骤1,当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元是否即将离开屏幕的显示区域;步骤2,将检测到的即将离开屏幕的显示区域的单元进行反渲染操作。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:步骤1,当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元是否即将离开屏幕的显示区域;步骤2,将检测到的即将离开屏幕的显示区域的单元进行反渲染操作。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:步骤1,当移动端应用程序检测到滚动事件时,检测所述移动端应用程序内正在被屏幕显示的列表中单元是否即将离开屏幕的显示区域;步骤2,将检测到的即将离开屏幕的显示区域的单元进行反渲染操作。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的移动端应用程序内存占用优化方法的设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1