作者: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的照片列表全部加载完成

Android图库中照片刷新性能优化措施相关推荐

  1. Android MediaScanner MediaProvider流程以及性能优化,音视频扫描

    Android MediaScanner MediaProvider流程以及性能优化,音视频扫描 快速扫描 一.源码解析 github链接 MediaScanner时序图 MediaSacannerR ...

  2. Android手机内存管理与性能优化

    Android手机内存管理与性能优化&JNI.NDK高级编程(JNI.Dalvik.内存监测) 课程分类:Android 适合人群:中级 课时数量:34小节课时 用到技术:Dalvik,DDM ...

  3. android图库文件夹乱,防止文件夹包含在Android图库中 | MOS86

    为了确保您的Android设备上的所有媒体文件都可以在Gallery应用程序中使用,您可以观看或看到它们,系统将会在每次重新启动设备时检查是否添加了新的媒体文件.虽然这对我们大多数人来说是完全正确的, ...

  4. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

    Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...

  5. android edittext不可复制_精选Android中高级面试题:性能优化,JNI,设计模式

    性能优化 1.图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理? 参考回答:首先我们要清楚图片的三级缓存是如何的: 如果内存足够时不回收.内存不够时就回收软引用对象 2.内存中 ...

  6. iOS开发中常见的性能优化技巧

    性能问题的主要原因是什么,原因有相同的,也有不同的,但归根到底,不外乎内存使用.代码效率.合适的策略逻辑.代码质量.安装包体积这一类问题. 但从用户体验的角度去思考,当我们置身处地得把自己当做用户去玩 ...

  7. QQ音乐Android客户端Web页面通用性能优化实践

    QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进行 Web ...

  8. webview加载的页面和浏览器渲染的页面不一致_QQ音乐Android客户端Web页面通用性能优化实践...

    QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进行 Web ...

  9. web 折线图大数据量拉取展示方案_【第2010期】QQ音乐Android客户端Web页面通用性能优化实践...

    前言 今日早读文章由QQ音乐客户端开发工程师@关岳分享,公号:云加社区(ID:QcloudCommunity,腾讯云官方开发者社区)授权分享. 正文从这开始~~ QQ音乐 Android 客户端的 W ...

最新文章

  1. 科大讯飞刘庆峰发表对未来10年AI三大判断
  2. python接收邮件内容启动程序_Python实现发送与接收邮件的方法详解
  3. 删除系统Win7系统盘越来越小,系统盘清理技巧
  4. 下边框_OPPO Find X2颜值有多高?超窄下边框+瀑布屏,看完大写的服气
  5. 深度解析算法优化内部机制:为什么机器学习算法难以优化?
  6. java https post get请求_JAVA利用HttpClient进行POST和GET请求(HTTPS)
  7. 你为什么要学习WordPress?
  8. border做三角形
  9. Memcached安装与使用实例
  10. dubbo 分布式服务框架 介绍
  11. Hadoop学习之路(一)理论基础和逻辑思维
  12. XshellXftp免费版本申请
  13. 74xx系列芯片类型及功能概览
  14. PyQt5 与PyQt4的区别
  15. 软件工程专业学习路线
  16. 用Python实现简单的服务器【新手必学】
  17. HP M1136无法打印的解决方法
  18. 偏爱MySQL,Nifty使用4个Web Server支撑5400万个用户网站
  19. 51 nod 2070 最小罚款
  20. 为 TDesignBlazor 添加暗黑模式

热门文章

  1. 外卖项目09---Redis了解
  2. PMP®考试抽中审查提供的材料
  3. SAP 委外加工-收货异常处理
  4. 什么是CLOS架构?
  5. 企鹅号自媒体爆文技巧
  6. 面试直通车之网络部分
  7. python原子操作_通俗易懂:说说 Python 里的线程安全、原子操作
  8. Linux微信黑屏,微信黑屏打不开解决方法,所有程序都打不开
  9. php自适应高度,iframe 自适应高度
  10. C语言——操作符(详解)