移动应用中相册排序优化方法

2020-10-21 11:21赵化金小俊
写真地理 2020年7期
关键词:移动应用优化方法

赵化 金小俊

摘 要: 相册是当前移动应用中的重要功能模块,如何快速的加载和展示相册图片对于用户体验的提升具有显著意义。本文提出了一种基于分批加载和取尾排序的相册枚举及排序优化方法。当用户相册中图片较多时,枚举每隔一定数量的图片后即抛出排序顯示,由于排序耗时大于枚举耗时,在每批排序完成后取最后一批枚举的图片再行排序,即取尾排序。实践表明采用本文的优化方法后,相册排序显示效率提升明显,具有极大的应用价值。

关键词: 移动应用;相册排序;优化方法

【中图分类号】F275.3     【文献标识码】A     【文章编号】1674-3733(2020)07-0210-01

1 引言

随着生活场景的丰富繁多和手机相机功能的不断升级,移动APP中的相册模块使用频率愈趋广泛[1]。而随着相册中图片数量的增多,特别是在需要对相册中图片按日期排序的功能场景,如何快速的加载图片,以及如何提高图片排序的效率成为了一个亟需解决和优化的问题[2-4]。针对这个问题,本文以iOS平台为例提出了一种基于分批加载和取尾排序的优化方法。

2 相册功能模块

移动应用中相册模块通常包括按日期排序的Moment以及Albums这两个功能。其中Moment功能和系统相册类似,根据图片的日期信息进行排序,之后按照不同日期分类别显示。

3 Moment功能实现思路

Moment的一般实现原理为先遍历系统的所有相册,之后获取每个相册内图片的日期信息,根据日期进行分类和排序,最后把枚举完的所有数据放到界面上来显示。

加载完数据之后,即可创建UICollectionView,设置dataSource以显示moment图片。但是如果相册图片数量较大,常规加载方法耗时会急剧上升,造成用户打开相册卡顿,白屏甚至是程序冻结等严重影响用户体验的情况。

4 优化方案

对于Moment功能,常规加载逻辑需要遍历完系统内的所有相册图片后再按日期排序后显示给用户。因此,优化的切入口只能在枚举和排序这两部分。本文基于此提出了分批加载和取尾排序的思路来解决大批量图片下枚举和排序的性能问题。其思路为如果用户手机相册内图片数量较多,不是等所有图片都枚举排序完再显示,而是枚举每隔一定数量的图片(比如50张)后即抛到队列(NSOperationQueue)里面按日期分类并排序,排序完成后再显示给用户,如此既可以让用户感知到图片动态加载的过程,也使图片能分批加载,避免性能和内存的激增。一般情况下,排序的耗时会大于图片枚举的耗时,也就是第一批50张图片排序完成后,前面枚举抛到队列里面等待排序的图片已经有若干批,此时我们只对最后一批图片进行排序,即取尾。同时,清空当前队列,因为中间批次的数据已经无排序的意义了,相册只取最新批次的图片进行显示。方案详细流程图如图1所示:

为了最大程度的减轻动态加载后刷新显示对用户造成的突兀感,在显示之前需要判断用户是否在滑动页面,只有页面静止的时候刷新显示。但对于全部图片枚举完成后的最后一批数据则要暂时保存住(否则最后批次的数据会丢失),待用户停止滑动后再行刷新显示。

4.1 分批加载

Moment需要按日期分类显示,最新的显示在最前面,所以在枚举相册的时候可以先从最近的相册开始(一般用户拍摄的照片相对导入的图片会早一点)。加载到50的倍数张后就抛到队列里面等待排序。一个相册枚举完后再继续遍历其余的相册,如此循环,直至所有相册遍历完毕。

4.2 取尾排序

每组批次的图片都加到一个串行队列里面等待排序,该批次的排序完成之后取当前队列最后一个(也就是最新过来的枚举图片)继续执行排序,同时清空当前的队列内的数据。

4.3 图片显示逻辑

中间批次按日期分类过的数据准备就绪后,在刷新图片显示之前先判断一下当前用户是否在滑动屏幕,如果是非滑动状态则刷新显示,否则直接丢弃掉,但是对于最后一批数据需要先存储着,并在用户停止滑动的回调函数内进行判断,一旦用户停止滑动了就立即刷新到页面上显示。

5 方案展望

将上述优化方案应用于项目中进行测试,当相册数量达到100个,总图片数大于一万张后,相册仍然能够正常打开并流畅滑动,表明该方案具有高度的可行性和应用价值。

虽然该方案极大的提高了相册加载和排序的性能,但仍然有继续改进的空间,在此提出一些技术展望的设想,以期抛砖引玉之效:

1)枚举队列内等待排序的中间数据亦可以保留,待用户停止滑动后做差别排序,而不是简单的直接丢弃。

2)排序队列目前存在着重复排序。比如,当第一批50张图片排序后,第二批进入排序的200张图片又需要重新分类排序,中间批次的数据只是为了展示给用户一个动态加载过程,所以第200张图片可以只对后面的150张图片进行排序,图片中有新的日期则新建日期类别,相同日期的直接插入前序中。

参考文献

[1] 张浩,郭灿.数据可视化技术应用趋势与分类研究[J].软件导刊,2012(5):169-172.

[2] 刘洪辉,吴岳芬.用户行为模式挖掘问题的研究[J].计算机技术与发展,2006(5):49-53.

[3] 李志鹏,李立弘,喻守刚,曾锋,史俊波.基于iOS的实时反馈水准测量软件设计与实现[J].测绘通报,2019(S2):15-19.

[4] 胡伟峰,仇磊.智能手机iOS&Android系统操控行为的用户体验对比研究[J].包装过程,2018(16):12-17.

猜你喜欢
移动应用优化方法
T学校公共设施便捷报修平台的移动应用研究
云计算环境下的微课移动云平台设计
基于知识元和有色Petri网的应急实施流程优化方法
大数据时代下免费手机软件盈利模式探讨
智能建筑暖通空调系统优化方法研究
学生成绩管理系统数据查询优化方法研究 
基于APICloud的“校园健身达人”APP设计与实现
灵活运用多媒体,优化语文教学
优化电力通信网运行方式
移动互联网在防汛工作中的应用