[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] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。