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

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

Info

Publication number
CN104699498A
CN104699498A CN201410753407.1A CN201410753407A CN104699498A CN 104699498 A CN104699498 A CN 104699498A CN 201410753407 A CN201410753407 A CN 201410753407A CN 104699498 A CN104699498 A CN 104699498A
Authority
CN
China
Prior art keywords
list
thread
chained list
optimization method
asynchronous loading
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.)
Granted
Application number
CN201410753407.1A
Other languages
English (en)
Other versions
CN104699498B (zh
Inventor
李权宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Deyixin Technology Co ltd
Original Assignee
Shanghai Feixun Data Communication Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Feixun Data Communication Technology Co Ltd filed Critical Shanghai Feixun Data Communication Technology Co Ltd
Priority to CN201410753407.1A priority Critical patent/CN104699498B/zh
Publication of CN104699498A publication Critical patent/CN104699498A/zh
Application granted granted Critical
Publication of CN104699498B publication Critical patent/CN104699498B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本发明提供一种基于Android平台的通过列表控件异步加载图片的优化方法,通过自行建立线程池和等待链表,利用近期最少使用思想,通过后进先出方式来处理线程逻辑,使得在列表滚动过程中处于屏幕中央的线程永远被优先加载,处于栈顶的最容易被抛弃,并通过等待链表的个数限制来加速栈顶节点的被抛弃过程。本发明的基于Android平台的通过列表控件异步加载图片的优化方法有效地提升每个线程占用的带宽,加速资源获取的速度;提升了用户体验,节省了系统资源。

Description

基于Android平台的通过列表控件异步加载图片的优化方法
技术领域
本发明涉及一种图片加载的方法,特别是涉及一种基于Android平台的通过列表控件异步加载图片的优化方法。
背景技术
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。
因此,基于Android平台的各种应用呈现爆发式增长,而且移动互联网的发展让更多的应用已经不仅局限于以前的单机工具类应用,而更趋向于移动互联网式交互型应用。在现有的各类应用中,都需要展示服务端提供的大量图片文字等信息。因此,列表控件成为一个必不可少的控件,列表中使用异步加载网络图片也是常用的技术手段。
现有技术中,对网络图片的加载均是通过调用系统异步加载方式来实现。基本所有的优化方案都是针对网络图片做缓存。
如申请号为201110154365.6、发明名称为《通过控件加载远程图片的方法及系统》的中国发明专利中公开一种通过控件加载远程图片的方法,包括以下步骤:下载远程图片文件;对所述远程图片文件进行解码,读取图片数据;根据所述图片数据绘制图片到控件上。采用该方法,能在Android系统的移动终端上,读取远程图片并展示在用户界面上。
再比如申请号为201210583612.9、发明名称为《基于Android平台的图片加载方法》的中国发明专利中公开一种图片信息加载方法,包括:获取当前界面所需展示的图片的数据信息;根据所述图片的缩略图的数据量大小,从小到大下载所述图片的缩略图;当各个所述图片的缩略图下载完成后,根据所述图片的完整图的数据量大小,从小到大下载所述图片的完整图。
然而,目前基于Android平台的终端设备中在通过列表控件异步加载网络图片时均针对缓存来进行优化,在加载数量和加载逻辑上却依然使用了系统的默认异步加载方式,并未从 加载数量和加载逻辑上去进行优化。
对于加载逻辑而言,Android系统本身异步加载过程没有问题,问题在于通过列表控件异步加载网络图片这种特定情况下就存在一定的不合理。这是因为,当异步操作大于系统设定的工作线程最大值后,新的异步操作会加入等待队列中,而队列又是先进先出的方式。这样的情况会导致于用户快速滑动列表之后,列表迅速发起大量的异步请求,此时列表早已经到了下面几十行,可是线程池中还是依次慢慢一条条执行所有的异步请求。等执行到几十行之后时间和资源都损耗较为严重,造成用户体验太差。
对于加载数量而言,目前Android系统默认的异步请求的线程池最大工作线程个数24个,由于网络带宽有限,而且手机对于列表的展示个数通常为6-10个。为了快速展示图片到控件上,只需同时并发10个左右即可。因此,控制并发量也能增加每个线程的处理能力,同时减少使用了系统资源。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于Android平台的通过列表控件异步加载图片的优化方法,在Android平台的应用中,通过ListView或GridView或者继承于此两类View的列表控件在异步加载图片时对加载逻辑和加载数量进行优化,从而解决异步加载图片时造成的卡顿或者内存溢出等问题。
为实现上述目的及其他相关目的,本发明提供一种基于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、等待用户继续操作列表。
根据上述的基于Android平台的通过列表控件异步加载图片的优化方法,其中:所述步骤S2中,根据Android终端设备CPU个数设定线程池中最大同时工作线程数。
进一步地,根据上述的基于Android平台的通过列表控件异步加载图片的优化方法,其中:线程池中最大同时工作线程数与Android终端设备CPU个数相同。
根据上述的基于Android平台的通过列表控件异步加载图片的优化方法,其中:所述步骤S3中,根据列表控件显示数量定义等待线程链表最大值。
进一步地,根据上述的基于Android平台的通过列表控件异步加载图片的优化方法,其中:等待线程链表最大值大于列表控件显示数量。
如上所述,本发明的基于Android平台的通过列表控件异步加载图片的优化方法,具有以下有益效果:
(1)通过后进先出原则和限制等待队列最大值来对栈顶的操作进行抛弃处理,以提前最新加入队列的操作的开始执行时间;
(2)通过分析自身产品的规则,结合硬件资源,找出本应用最合适的并发数,以提升每个线程占用的带宽,加速资源获取的速度;
(3)提升了用户体验,节省了系统资源。
附图说明
图1显示为本发明的基于Android平台的通过列表控件异步加载图片的优化方法的流程图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
目前,Android终端设备以手机和平板电脑等智能终端为主。由于用户对设备的使用习惯等原因,不论是矩阵列表还是单行列表等列表控件均是采用上下滑动方式。在用户实际操作中,列表滑动的速度有快有慢,并且互联网的应用列表数据量比较大。受终端设备屏幕大小 的限制,处于用户视角中的列表数据也许只有几项。因此,对于超出用户可视范围的列表数据不再进行加载;对可视范围之内的列表数据优先进行加载。同时,并发数量可以根据实际情况控制在一个合理的数值上,以便于每个工作线程能够获得更合理的带宽,从而提高每个线程的加载速度。
因此,本发明的基于Android平台的通过列表控件异步加载图片的优化方法是通过自行建立线程池和等待链表,利用近期最少使用思想,通过后进先出方式来处理线程逻辑,使得在列表滚动过程中处于屏幕中央的线程永远被优先加载,处于栈顶的最容易被抛弃,并通过等待链表的个数限制来加速栈顶节点的被抛弃过程,从而节省系统资源,加快后进入的线程的处理,更进一步提升有效异步请求响应时间,提高用户体验。
参照图1,本发明的基于Android平台的通过列表控件异步加载图片的优化方法包括以下步骤:
步骤S1、启动应用。
步骤S2、建立线程池,设定线程池中最大同时工作线程数。
具体地,根据Android终端设备CPU个数设定线程池中最大同时工作线程数。优选地,线程池中最大同时工作线程数与Android终端设备CPU个数相同。
步骤S3、建立一个等待线程链表,并定义等待线程链表最大值。
具体地,根据列表控件显示数量定义等待线程链表最大值。优选地,等待线程链表最大值稍大于列表控件显示数量。如,Android设备的列表控件显示数量为6,则可定义等待线程链表最大值为8;Android设备的列表控件显示数量为9,则可定义等待线程链表最大值为12,等等。
步骤S4、用户操作列表滚动时,判断该列表是否有加载图片的需求,如果否,转入步骤S13;如有是,则每个有需求的列表条目均发出自己的异步加载任务,转入步骤S5。
步骤S5、判断目前线程池中正在工作线程数是否小于设定的最大同时工作线程数,如果是,转入步骤S6;如果否,转入步骤S7。
步骤S6、将异步加载任务载入到线程池中并立刻运行。
步骤S7、判断目前等待线程链表的元素个数是否小于等待线程链表最大值,如果是,转入步骤S8,如果否,转入步骤S9。
步骤S8、将此异步加载任务存入等待线程链表末尾,转入步骤S10。
步骤S9、将此等待线程链表中第一个异步节点抛弃,并把最新的异步加载任务插入到该等待线程链表队尾。
步骤S10、当线程池中的某一个工作线程执行完成后,检查等待线程链表,判断等待线 程链表是否为空,如果是,则转入步骤S12;如果否,则转入步骤S11。
步骤S11、取出等待线程链表中队尾这个节点,并加入线程池立刻执行,转入步骤S10。
步骤S12、完成所有异步加载任务。
步骤S13、等待用户继续操作列表。
综上所述,本发明的基于Android平台的通过列表控件异步加载图片的优化方法通过后进先出原则和限制等待队列最大值来对栈顶的操作进行抛弃处理,以提前最新加入队列的操作的开始执行时间;通过分析自身产品的规则,结合硬件资源,找出本应用最合适的并发数,以提升每个线程占用的带宽,加速资源获取的速度;提升了用户体验,节省了系统资源。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (5)

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平台的通过列表控件异步加载图片的优化方法,其特征在于:等待线程链表最大值大于列表控件显示数量。
CN201410753407.1A 2014-12-10 2014-12-10 基于Android平台的通过列表控件异步加载图片的优化方法 Active CN104699498B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410753407.1A CN104699498B (zh) 2014-12-10 2014-12-10 基于Android平台的通过列表控件异步加载图片的优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410753407.1A CN104699498B (zh) 2014-12-10 2014-12-10 基于Android平台的通过列表控件异步加载图片的优化方法

Publications (2)

Publication Number Publication Date
CN104699498A true CN104699498A (zh) 2015-06-10
CN104699498B CN104699498B (zh) 2017-11-03

Family

ID=53346664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410753407.1A Active CN104699498B (zh) 2014-12-10 2014-12-10 基于Android平台的通过列表控件异步加载图片的优化方法

Country Status (1)

Country Link
CN (1) CN104699498B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335526A (zh) * 2015-12-04 2016-02-17 北京京东尚科信息技术有限公司 一种图片加载方法及装置
CN105630492A (zh) * 2015-12-21 2016-06-01 北京奇虎科技有限公司 一种应用的周期任务封装的方法以及装置
CN112825538A (zh) * 2019-11-20 2021-05-21 Oppo(重庆)智能科技有限公司 一种应用启动方法、装置及终端设备
CN117055994A (zh) * 2023-07-31 2023-11-14 广东保伦电子股份有限公司 一种基于数据驱动ui交互界面的实现方法及处理终端

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101777008A (zh) * 2009-12-31 2010-07-14 中兴通讯股份有限公司 移动终端系统线程池实现方法及装置
US20120021823A1 (en) * 2008-12-15 2012-01-26 Eui-Joon Youm Interactive hybrid asynchronous computer game infrastructure
CN102541653A (zh) * 2010-12-24 2012-07-04 新奥特(北京)视频技术有限公司 一种多任务线程池调度方法和系统
CN102946599A (zh) * 2012-11-08 2013-02-27 惠州Tcl移动通信有限公司 实现移动终端应用程序下载的方法及移动终端
US20130156286A1 (en) * 2011-09-25 2013-06-20 Theranos, Inc. Systems and methods for collecting and transmitting assay results
CN103379000A (zh) * 2012-04-28 2013-10-30 阿里巴巴集团控股有限公司 一种并发测试方法及测试服务器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120021823A1 (en) * 2008-12-15 2012-01-26 Eui-Joon Youm Interactive hybrid asynchronous computer game infrastructure
CN101777008A (zh) * 2009-12-31 2010-07-14 中兴通讯股份有限公司 移动终端系统线程池实现方法及装置
CN102541653A (zh) * 2010-12-24 2012-07-04 新奥特(北京)视频技术有限公司 一种多任务线程池调度方法和系统
US20130156286A1 (en) * 2011-09-25 2013-06-20 Theranos, Inc. Systems and methods for collecting and transmitting assay results
CN103379000A (zh) * 2012-04-28 2013-10-30 阿里巴巴集团控股有限公司 一种并发测试方法及测试服务器
CN102946599A (zh) * 2012-11-08 2013-02-27 惠州Tcl移动通信有限公司 实现移动终端应用程序下载的方法及移动终端

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335526A (zh) * 2015-12-04 2016-02-17 北京京东尚科信息技术有限公司 一种图片加载方法及装置
CN105630492A (zh) * 2015-12-21 2016-06-01 北京奇虎科技有限公司 一种应用的周期任务封装的方法以及装置
CN105630492B (zh) * 2015-12-21 2019-05-31 北京奇虎科技有限公司 一种应用的周期任务封装的方法以及装置
CN112825538A (zh) * 2019-11-20 2021-05-21 Oppo(重庆)智能科技有限公司 一种应用启动方法、装置及终端设备
CN112825538B (zh) * 2019-11-20 2022-04-12 Oppo(重庆)智能科技有限公司 一种应用启动方法、装置、终端设备及存储介质
CN117055994A (zh) * 2023-07-31 2023-11-14 广东保伦电子股份有限公司 一种基于数据驱动ui交互界面的实现方法及处理终端
CN117055994B (zh) * 2023-07-31 2024-02-27 广东保伦电子股份有限公司 一种基于数据驱动的交互界面实现方法及处理终端

Also Published As

Publication number Publication date
CN104699498B (zh) 2017-11-03

Similar Documents

Publication Publication Date Title
WO2020038163A1 (zh) 图标的显示方法、装置、终端及存储介质
EP2224351A1 (en) method for use in association with a multi-tab interpretation and rendering function
JP5661704B2 (ja) 情報処理装置、サーバ装置、情報処理方法及びコンピュータプログラム
CN104699498A (zh) 基于Android平台的通过列表控件异步加载图片的优化方法
CN109656445B (zh) 内容处理方法、装置、终端及存储介质
CN109684000B (zh) App数据显示方法、装置、设备及计算机可读存储介质
CN109388317B (zh) 一种图片加载方法、终端设备及存储介质
CN113467871A (zh) H5页面展示方法、装置、设备及存储介质
WO2018133597A1 (zh) 网页图片加载的方法、系统、电子设备及可读存储介质
CN110609718A (zh) 图片加载方法、装置、电子设备及可读存储介质
CN109361947A (zh) 网络资源批量加载方法、智能电视、存储介质及装置
CN112784200A (zh) 页面数据处理方法、装置、设备、介质和计算机程序产品
CN105808307B (zh) 一种页面显示方法和装置
CN105760458A (zh) 一种图片处理方法及电子设备
CN109558187B (zh) 一种用户界面渲染方法及装置
US11520473B2 (en) Switch control for animations
US20140092084A1 (en) Webpage display method and apparatus
CN112148395A (zh) 页面显示方法、装置、设备及存储介质
CN107479960B (zh) 一种单元视图的显示方法和装置
US10769352B2 (en) Providing dynamic web content without flicker
CN111796825B (zh) 一种弹幕的绘制方法、装置、设备和存储介质
CN113626113B (zh) 一种页面渲染方法和装置
CN112596820A (zh) 一种资源加载方法、装置、设备以及存储介质
CN113419649A (zh) 用于操作电子装置的方法及其装置
CN108111905B (zh) 频道列表的显示方法、智能电视及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201102

Address after: 318015 no.2-3167, zone a, Nonggang City, no.2388, Donghuan Avenue, Hongjia street, Jiaojiang District, Taizhou City, Zhejiang Province

Patentee after: Taizhou Jiji Intellectual Property Operation Co.,Ltd.

Address before: 201616 Shanghai city Songjiang District Sixian Road No. 3666

Patentee before: Phicomm (Shanghai) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230810

Address after: 313000 room 1019, Xintiandi commercial office, Yishan street, Wuxing District, Huzhou, Zhejiang, China

Patentee after: Huzhou YingLie Intellectual Property Operation Co.,Ltd.

Address before: 318015 no.2-3167, area a, nonggangcheng, 2388 Donghuan Avenue, Hongjia street, Jiaojiang District, Taizhou City, Zhejiang Province

Patentee before: Taizhou Jiji Intellectual Property Operation Co.,Ltd.

TR01 Transfer of patent right

Effective date of registration: 20240521

Address after: No. 2107, 2nd Floor, Qinghe Wenyuan, No. 28 Qinghe Middle Street, Haidian District, Beijing, 100000

Patentee after: Du Lin

Country or region after: China

Address before: 313000 room 1019, Xintiandi commercial office, Yishan street, Wuxing District, Huzhou, Zhejiang, China

Patentee before: Huzhou YingLie Intellectual Property Operation Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240527

Address after: Room 409, North Side, Section A, 4th Floor, Building 1, Third Street, Shangdi Information Industry Base, Haidian District, Beijing, 100000

Patentee after: Beijing Deyixin Technology Co.,Ltd.

Country or region after: China

Address before: No. 2107, 2nd Floor, Qinghe Wenyuan, No. 28 Qinghe Middle Street, Haidian District, Beijing, 100000

Patentee before: Du Lin

Country or region before: China