首页 > 专利 > 上海斐讯数据通信技术有限公司 > 基于Android平台的通过列表控件异步加载图片的优化方法专利详情

基于Android平台的通过列表控件异步加载图片的优化方法   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2014-12-10
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2015-09-02
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2017-11-03
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2034-12-10
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201410753407.1 申请日 2014-12-10
公开/公告号 CN104699498B 公开/公告日 2017-11-03
授权日 2017-11-03 预估到期日 2034-12-10
申请年 2014年 公开/公告年 2017年
缴费截止日 2022-01-11
分类号 G06F9/445 主分类号 G06F9/445
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 4
权利要求数量 5 非专利引证数量 0
引用专利数量 6 被引证专利数量 0
非专利引证
引用专利 US2012/0021823A1、CN102541653A、CN102946599A、US2013/0156286A1、CN103379000A、CN101777008A 被引证专利
专利权维持 5 专利申请国编码 CN
专利事件 转让 事务标签 公开、实质审查、授权、权利转移
申请人信息
申请人 第一申请人
专利权人 上海斐讯数据通信技术有限公司 当前专利权人 台州市吉吉知识产权运营有限公司
发明人 李权宇 第一发明人 李权宇
地址 上海市松江区思贤路3666号 邮编 201616
申请人数量 1 发明人数量 1
申请人所在省 上海市 申请人所在市 上海市松江区
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
杭州千克知识产权代理有限公司 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
周希良
摘要
本发明提供一种基于Android平台的通过列表控件异步加载图片的优化方法,通过自行建立线程池和等待链表,利用近期最少使用思想,通过后进先出方式来处理线程逻辑,使得在列表滚动过程中处于屏幕中央的线程永远被优先加载,处于栈顶的最容易被抛弃,并通过等待链表的个数限制来加速栈顶节点的被抛弃过程。本发明的基于Android平台的通过列表控件异步加载图片的优化方法有效地提升每个线程占用的带宽,加速资源获取的速度;提升了用户体验,节省了系统资源。
  • 摘要附图
    基于Android平台的通过列表控件异步加载图片的优化方法
  • 说明书附图:图1
    基于Android平台的通过列表控件异步加载图片的优化方法
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2020-11-13 专利权的转移 登记生效日: 2020.11.02 专利权人由上海斐讯数据通信技术有限公司变更为台州市吉吉知识产权运营有限公司 地址由201616 上海市松江区思贤路3666号变更为318015 浙江省台州市椒江区洪家街道东环大道2388号农港城A区2-3167号
2 2017-11-03 授权
3 2015-09-02 实质审查的生效 IPC(主分类): G06F 9/445 专利申请号: 201410753407.1 申请日: 2014.12.10
4 2015-06-10 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种基于Android平台的通过列表控件异步加载图片的优化方法,其特征在于:包括以下步骤:
步骤S1、启动应用;
步骤S2、建立线程池,设定线程池中最大同时工作线程数;
步骤S3、建立一个等待线程链表,定义等待线程链表最大值;
步骤S4、用户操作列表滚动时,判断该列表是否有加载图片的需求,如果否,转入步骤S13;如有是,则每个有需求的列表条目均发出自己的异步加载任务,转入步骤S5;
步骤S5、判断目前线程池中正在工作线程数是否小于设定的最大同时工作线程数,如果是,转入步骤S6;如果否,转入步骤S7;
步骤S6、将异步加载任务载入到线程池中并立刻运行,转入步骤S7;
步骤S7、判断目前等待线程链表中的任务个数是否小于等待线程链表最大值,如果是,转入步骤S8;如果否,转入步骤S9;
步骤S8、将此异步加载任务存入等待线程链表末尾,转入步骤S10;
步骤S9、将此等待线程链表中第一个异步节点抛弃,并把最新的异步加载任务插入到该等待线程链表队尾,转入步骤S10;
步骤S10、当线程池中的某一个工作线程执行完成后,检查等待线程链表,判断等待线程链表是否为空,如果是,则转入步骤S12;如果否,则转入步骤S11;
步骤S11、取出等待线程链表中队尾的节点,并加入线程池立刻执行,转入步骤S10;
步骤S12、完成所有异步加载任务;
步骤S13、等待用户继续操作列表。

2.根据权利要求1所述的基于Android平台的通过列表控件异步加载图片的优化方法,其特征在于:所述步骤S2中,根据Android终端设备CPU个数设定线程池中最大同时工作线程数。

3.根据权利要求2所述的基于Android平台的通过列表控件异步加载图片的优化方法,其特征在于:线程池中最大同时工作线程数与Android终端设备CPU个数相同。

4.根据权利要求1所述的基于Android平台的通过列表控件异步加载图片的优化方法,其特征在于:所述步骤S3中,根据列表控件显示数量定义等待线程链表最大值。

5.根据权利要求4所述的基于Android平台的通过列表控件异步加载图片的优化方法,其特征在于:等待线程链表最大值大于列表控件显示数量。
说明书

技术领域

[0001] 本发明涉及一种图片加载的方法,特别是涉及一种基于Android平台的通过列表控件异步加载图片的优化方法。

背景技术

[0002] Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。
[0003] 因此,基于Android平台的各种应用呈现爆发式增长,而且移动互联网的发展让更多的应用已经不仅局限于以前的单机工具类应用,而更趋向于移动互联网式交互型应用。在现有的各类应用中,都需要展示服务端提供的大量图片文字等信息。因此,列表控件成为一个必不可少的控件,列表中使用异步加载网络图片也是常用的技术手段。
[0004] 现有技术中,对网络图片的加载均是通过调用系统异步加载方式来实现。基本所有的优化方案都是针对网络图片做缓存。
[0005] 如申请号为201110154365.6、发明名称为《通过控件加载远程图片的方法及系统》的中国发明专利中公开一种通过控件加载远程图片的方法,包括以下步骤:下载远程图片文件;对所述远程图片文件进行解码,读取图片数据;根据所述图片数据绘制图片到控件上。采用该方法,能在Android系统的移动终端上,读取远程图片并展示在用户界面上。
[0006] 再比如申请号为201210583612.9、发明名称为《基于Android平台的图片加载方法》的中国发明专利中公开一种图片信息加载方法,包括:获取当前界面所需展示的图片的数据信息;根据所述图片的缩略图的数据量大小,从小到大下载所述图片的缩略图;当各个所述图片的缩略图下载完成后,根据所述图片的完整图的数据量大小,从小到大下载所述图片的完整图。
[0007] 然而,目前基于Android平台的终端设备中在通过列表控件异步加载网络图片时均针对缓存来进行优化,在加载数量和加载逻辑上却依然使用了系统的默认异步加载方式,并未从 加载数量和加载逻辑上去进行优化。
[0008] 对于加载逻辑而言,Android系统本身异步加载过程没有问题,问题在于通过列表控件异步加载网络图片这种特定情况下就存在一定的不合理。这是因为,当异步操作大于系统设定的工作线程最大值后,新的异步操作会加入等待队列中,而队列又是先进先出的方式。这样的情况会导致于用户快速滑动列表之后,列表迅速发起大量的异步请求,此时列表早已经到了下面几十行,可是线程池中还是依次慢慢一条条执行所有的异步请求。等执行到几十行之后时间和资源都损耗较为严重,造成用户体验太差。
[0009] 对于加载数量而言,目前Android系统默认的异步请求的线程池最大工作线程个数24个,由于网络带宽有限,而且手机对于列表的展示个数通常为6-10个。为了快速展示图片到控件上,只需同时并发10个左右即可。因此,控制并发量也能增加每个线程的处理能力,同时减少使用了系统资源。

发明内容

[0010] 鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于Android平台的通过列表控件异步加载图片的优化方法,在Android平台的应用中,通过ListView或GridView或者继承于此两类View的列表控件在异步加载图片时对加载逻辑和加载数量进行优化,从而解决异步加载图片时造成的卡顿或者内存溢出等问题。
[0011] 为实现上述目的及其他相关目的,本发明提供一种基于Android平台的通过列表控件异步加载图片的优化方法,包括以下步骤:步骤S1、启动应用;步骤S2、建立线程池,设定线程池中最大同时工作线程数;步骤S3、建立一个等待线程链表,定义等待线程链表最大值;步骤S4、用户操作列表滚动时,判断该列表是否有加载图片的需求,如果否,转入步骤S13;如有是,则每个有需求的列表条目均发出自己的异步加载任务,转入步骤S5;步骤S5、判断目前线程池中正在工作线程数是否小于设定的最大同时工作线程数,如果是,转入步骤S6;如果否,转入步骤S7;步骤S6、将异步加载任务载入到线程池中并立刻运行,转入步骤S7;步骤S7、判断目前等待线程链表中的任务个数是否小于等待线程链表最大值,如果是,转入步骤S8;如果否,转入步骤S9;步骤S8、将此异步加载任务存入等待线程链表末尾,转入步骤S10;步骤S9、将此等待线程链表中第一个异步节点抛弃,并把最新的异步加载任务插入到该等待线程链表队尾,转入步骤S10;步骤S10、当线程池中的某一个工作线程执行完成后,检查等待线程链表,判断等待线程链表是否为空,如果是,则转入步骤S12;如果否,则转入步骤S11;步骤S11、取出等待线程链表中队尾的节点,并加入线程池立刻执行,转入步骤S10;步骤S12、完成所有异步加载任务;步骤S13、等待用户继续操作列表。
[0012] 根据上述的基于Android平台的通过列表控件异步加载图片的优化方法,其中:所述步骤S2中,根据Android终端设备CPU个数设定线程池中最大同时工作线程数。
[0013] 进一步地,根据上述的基于Android平台的通过列表控件异步加载图片的优化方法,其中:线程池中最大同时工作线程数与Android终端设备CPU个数相同。
[0014] 根据上述的基于Android平台的通过列表控件异步加载图片的优化方法,其中:所述步骤S3中,根据列表控件显示数量定义等待线程链表最大值。
[0015] 进一步地,根据上述的基于Android平台的通过列表控件异步加载图片的优化方法,其中:等待线程链表最大值大于列表控件显示数量。
[0016] 如上所述,本发明的基于Android平台的通过列表控件异步加载图片的优化方法,具有以下有益效果:
[0017] (1)通过后进先出原则和限制等待队列最大值来对栈顶的操作进行抛弃处理,以提前最新加入队列的操作的开始执行时间;
[0018] (2)通过分析自身产品的规则,结合硬件资源,找出本应用最合适的并发数,以提升每个线程占用的带宽,加速资源获取的速度;
[0019] (3)提升了用户体验,节省了系统资源。

实施方案

[0021] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0022] 需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0023] 目前,Android终端设备以手机和平板电脑等智能终端为主。由于用户对设备的使用习惯等原因,不论是矩阵列表还是单行列表等列表控件均是采用上下滑动方式。在用户实际操作中,列表滑动的速度有快有慢,并且互联网的应用列表数据量比较大。受终端设备屏幕大小 的限制,处于用户视角中的列表数据也许只有几项。因此,对于超出用户可视范围的列表数据不再进行加载;对可视范围之内的列表数据优先进行加载。同时,并发数量可以根据实际情况控制在一个合理的数值上,以便于每个工作线程能够获得更合理的带宽,从而提高每个线程的加载速度。
[0024] 因此,本发明的基于Android平台的通过列表控件异步加载图片的优化方法是通过自行建立线程池和等待链表,利用近期最少使用思想,通过后进先出方式来处理线程逻辑,使得在列表滚动过程中处于屏幕中央的线程永远被优先加载,处于栈顶的最容易被抛弃,并通过等待链表的个数限制来加速栈顶节点的被抛弃过程,从而节省系统资源,加快后进入的线程的处理,更进一步提升有效异步请求响应时间,提高用户体验。
[0025] 参照图1,本发明的基于Android平台的通过列表控件异步加载图片的优化方法包括以下步骤:
[0026] 步骤S1、启动应用。
[0027] 步骤S2、建立线程池,设定线程池中最大同时工作线程数。
[0028] 具体地,根据Android终端设备CPU个数设定线程池中最大同时工作线程数。优选地,线程池中最大同时工作线程数与Android终端设备CPU个数相同。
[0029] 步骤S3、建立一个等待线程链表,并定义等待线程链表最大值。
[0030] 具体地,根据列表控件显示数量定义等待线程链表最大值。优选地,等待线程链表最大值稍大于列表控件显示数量。如,Android设备的列表控件显示数量为6,则可定义等待线程链表最大值为8;Android设备的列表控件显示数量为9,则可定义等待线程链表最大值为12,等等。
[0031] 步骤S4、用户操作列表滚动时,判断该列表是否有加载图片的需求,如果否,转入步骤S13;如有是,则每个有需求的列表条目均发出自己的异步加载任务,转入步骤S5。
[0032] 步骤S5、判断目前线程池中正在工作线程数是否小于设定的最大同时工作线程数,如果是,转入步骤S6;如果否,转入步骤S7。
[0033] 步骤S6、将异步加载任务载入到线程池中并立刻运行。
[0034] 步骤S7、判断目前等待线程链表的元素个数是否小于等待线程链表最大值,如果是,转入步骤S8,如果否,转入步骤S9。
[0035] 步骤S8、将此异步加载任务存入等待线程链表末尾,转入步骤S10。
[0036] 步骤S9、将此等待线程链表中第一个异步节点抛弃,并把最新的异步加载任务插入到该等待线程链表队尾。
[0037] 步骤S10、当线程池中的某一个工作线程执行完成后,检查等待线程链表,判断等待线 程链表是否为空,如果是,则转入步骤S12;如果否,则转入步骤S11。
[0038] 步骤S11、取出等待线程链表中队尾这个节点,并加入线程池立刻执行,转入步骤S10。
[0039] 步骤S12、完成所有异步加载任务。
[0040] 步骤S13、等待用户继续操作列表。
[0041] 综上所述,本发明的基于Android平台的通过列表控件异步加载图片的优化方法通过后进先出原则和限制等待队列最大值来对栈顶的操作进行抛弃处理,以提前最新加入队列的操作的开始执行时间;通过分析自身产品的规则,结合硬件资源,找出本应用最合适的并发数,以提升每个线程占用的带宽,加速资源获取的速度;提升了用户体验,节省了系统资源。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0042] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

附图说明

[0020] 图1显示为本发明的基于Android平台的通过列表控件异步加载图片的优化方法的流程图。
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号