Android图库中照片刷新性能优化措施

来源:互联网 发布:首席财务官 知乎 编辑:程序博客网 时间:2024/05/22 14:11

作者:Ting.wong

 

      

笔者对原生Gallery的UI做了修改后,测试时出现了图库内容刷新偏慢的问题,主要体现有如下2个主要问题:

(1)    切换UI场景时容易闪烁;

(2)    进入照片列表缩略图时刷新慢;

 

针对如上问题,通过分析对比新旧图库版本的代码,终有一番所得,特将分析解决方法记录下,作为他人及自己的备忘。

(1)实现上出现了一些重复刷新UI的请求,故造成切换场景时UI的闪烁,笔者对所有代码中所有涉及UI切换的场景进行检查,同时对比原生Gallery,避免重复刷新情况的出现,场景包括:Gallery前后台切换,时间相册和文件夹相册的视角切换等。

(2)照片列表缩略图AlbumPage加载刷新慢,分析后了解主要由如下两方面引起:

Ø  A. 为了照顾到一套代码的兼容性,图库中有增加不同功能的开关。此处当有某个开关打开情况下,在加载绘制照片时对MediaSet和MediaItem重复判断其是否处于特定(比如加密)状态,客观上造成了延迟,解决方式为:在启用某个开关时,MediaSet和MediaItem在第一次被访问时判断并记录其功能所需的特殊状态,直到再次执行该功能的操作时才更新此状态,避免重复判断更新,若未启用开关时,移除所有对特殊状态(比如加密)的判断逻辑。

Ø  B. 原生图库应用为三列,在1080P分辨率的手机上图片列表最多可显示3X5=15张图片缩略图,我们自定义修改为四列之后,最多则可显示4X7=28张图片缩略图。这样,在生成每个刷新页面下的缩略图时,在两者尺寸相同的情况下,明显4列显示方式会占用更多内存和加载时间,解决方式:通过缩小缩略图原始尺寸的方式来提升内存使用和缩略图加载效率。

      

       通过如上措施导入后,现在照片列表的加载效率得到很大提升,具体测试数据如下(时间单位:毫秒):

次数\场景

从AlbumSetPage进入AlbumPage

从PhotoPage返回AlbumPage

第1次

667

366

第2次

513

466

第3次

698

422

第4次

633

413

第5次

533

367

平均值

608

406

其中:

(1)    测试时进入的相册一共有1047张图片

(2)    进入或返回AlbumPage的时间,从按下相册或者返回按钮开始,到AlbumPage的照片列表全部加载完成

 

0 0
原创粉丝点击