Androidapp性能优化之List篇.
Android app性能优化之List篇 黄坤/玄觉 大图模式 小图模式 典型较复杂ListView 界面分析 view数量多 同时显示的ListItem项比较多 布局复杂,多重view嵌套 数据下载,图片下载与显示(大图显示) 滚动中刷新UI(倒计时) 大图模式 小图模式 典型较复杂ListView 滚动过程分析 初始化时,inflate ListItems 滚动中,不断调用Adapter的getView()绑定数据 measure->layout->cpu draw ListItem for the first time gpu draw ListItem Official tips Improving Layout Performance Making ListView Scrolling Smooth Optimizing Layout Hierarchies Use a Background Thread Optimizing Hold View Objects in a View Holder Processing Bitmaps Off the UI Thread 初步优化 Avoid UI update when scrolling 避免倒计时更新/图片显示 Use a Background Thread 使用后台线程下载数据/图片 Optimizing Hold View Objects in a View Holder ViewHolder Optimizing Layout Hierarchies RelativeLayout vs LinearLayout? 深度优化 优化measure + layout效率(HierarchyViewer) 2层布局嵌套以上避免使用RelativeLayout 小图一个ListItem的measure时间,2.5ms-->0.7ms 优化draw时间,避免image scale 滚动中不刷新图片,使用颜色占位,正确imagesize 大图listItem采取背景颜色代替图片,draw时间,7ms->2.5ms 减少后台线程cpu资源占用(TraceView) 降低后台线程优先级,滚动中pause,根据cpu核心优化ThreadPoolSize 暂停后台线程时机 :onTouch代替onScrollStateChanged 延迟加载图片策略,滚动停止/低速滚动 fancy Thanks! 应用程序开发人员 高性能的List控件 体验:滑动流畅,显示内容迅速快,翻页快速 2点,时间+下载完成图片 hierrachyViewer查看measure时间 draw:图片 cpu:后台线程,优先级,traceView查看getView方法 2点,时间+下载完成图片 hierrachyViewer查看measure时间 draw:图片 cpu:后台线程,优先级,traceView查看getView方法