设为首页收藏本站

LUPA开源社区

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

Android性能个案研究

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

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

该Photoshop文档以每一个视图一个层次的方式展示了该应用。每一层都被标记为可见或不可见,可以通过View.getVisibility()的返回值来查看。每一层都以它所属的视图来命名,或者是android:id 或者是类名。我曾经尝试添加分组支持来重建视图树…我真应当好好完成该功能。


Photoshop as an IDE

通过检查层级列表,我们可以快速的确认至少一个过度绘制的原因:多重全屏背景。第一个背景是第一层视图,称为DecorView。该视图是Android系统创建的,包含了主题中定义的背景。系统中渐变的默认设置是不可见的,所以可以安全的把它去除掉。


DecorView向上滚动,你可以看到一个包含另一全屏梯度背景的LinearLayout。这是与DecorView完全相同的背景,因此是不必要的。唯一可见的背景,必须保持属于名为id/tweet_list_container的视图。


删除窗口背景:当你的应用程序启动时,在你的主题中定义的背景是被系统使用创建预览窗口的。绝不要把它设置为null,除非您的应用程序是透明的。相反,要把它设置为你想要的颜色或图片,或者通过调用getWindow().setBackgroundDrawable(null)onCreate() 中摆脱它。

进一步减少过度绘制


Photoshop文档有助于理解应用是如何构建的,但是用它来消除小区域的过度绘制时就有些困难了。现在我们必须转向Tracer for OpenGL。打开ADT (或监视器)中的同名视图,然后点击工具条中的箭头图标。输入你app的包名和主Activity的名称,然后选择一个目标文件并点击Trace


建议: 获取OpenGL跟踪是大任务并且很耗时。要使该任务更轻便更快,请勿勾选所有的Data Collection Ooptions 复选框。


Starting an OpenGL trace

Activity 名称: 当你运行一个应用时,logcat会展示包和Activity的名称。这就是我怎么知道在Tracer for OpenGL中该敲入些什么的原因。


当应用启动起来,打开前两个设置。

  • Collect Framebuffer contents on eglSwapBuffers()
  • Collect Framebuffer contents on glDraw*()

第一个有用的选项能帮助你快速的找到感兴趣的帧。第二个选择让我们看到每个帧由绘图命令绘制命令。第二个选项是解决透支问题的关键。

Enable data collections

这两个选项使我开始滚动主时间轴。它将消耗很长时间去捕捉每一帧(不出意外是30秒)所有我建议你直接下载我的捕获跟踪.你可以通过点击工具栏上的第一个按钮在Tracer for OpenGL打开文件。


酷毙

雷人

鲜花

鸡蛋

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

最新评论

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

返回顶部