设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 Google 查看内容

Android性能个案研究

2013-8-6 11:53| 发布者: joejoe0332| 查看: 3485| 评论: 0|原作者: 司马奔, 赵亮-本人, lwei, bigtiger02, 多多de棉花糖, wenger67, 蒋锴, 徐继开|来自: oschina.net

摘要:   Falcon Pro   我最近在我的Nexus 4上安装了Falcon Pro,一个新的Twitter客户端。我真的很喜欢使用这个应用程序,但我在使用它时注意到了某些地方存在一些问题,看起来滚动主时间轴并没有得到非常稳定的帧率 ...

一旦加载完成。跟踪显示你每GL命令发送到GPU的每个捕获的帧。 如果你下载了我的跟踪文件,跳转到21帧。当某一帧被选中你可以看到类似Frame Summary 选项卡情形. 另外,你可以点击蓝色高亮绘制的命令,在Details 选项卡中查看当前帧的状态。

组织:GL命令通过view分组。他们重新创建相同的树,在你的Hierarchy Viewer或XML布局文件可以查看。这使得了解视图生成特定的操作很容易。

Analyzing a frame in Tracer for OpenGL

通过点击先后在前三个绘图命令,你可以看到在PS已经确认的问题;一个全屏背景绘制3次。


通过向下追溯查找,我们可以进一步地找到更多有待优化的。当一个tweet(列表项目)被绘制的时候,一个ImageView控件用来绘制图像。控件首先绘制图像本身的背景:


Tweet item

Avatar background

Avatar


如果你凑近一点看,你会发现背景只是作为图片的边框。这意味着在图像背景中间黑色的部分过度绘制了。9-patch部分都被图像覆盖了。


这个问题的简单解决方法是把9-patch中间部分设置为透明。 Android的 2D渲染器总是把9-patch优化为透明。这个简单的改变将会去掉很多的过度绘制。


有趣的是, 相同确切的问题发生与内联元素。头像小不是个大问题,但内联元素却能够占据屏幕的绝大部分区域。解决方法是完全一样的。


Inline media background

Inline media


更多的选择: 我想Android的2D渲染管道,能够自动检测和纠正你过度绘制。我有一些想法但我不能作出任何承诺,就像使用内置GPU的优化,这只会与不完全透明图元。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部