1

我目前正在我的应用程序中追逐一些丢帧..我转向 systrace 寻求帮助,但不幸的是我从它的输出中并不聪明..

这是我的跟踪视图..

我的问题基本上是在我的适配器中我创建了相当大的列表项。这意味着当滚动适配器有一段时间什么都不做,然后它必须创建相当大的视图。甚至我做了很多优化(obvi I做回收,我基本上避免了所有冗余的对象实例化,..),有一些丢帧..它必须花费超过 16 毫秒:/

回到我的主要问题..我想我会看到我在 getView 调用期间直接调用我的适配器的方法的痕迹。但我看不到那里。我做错什么了吗?您是否从这个跟踪视图中看到我的代码的主要瓶颈在哪里?我搞不清楚了:/

谢谢..

4

1 回答 1

1

我认为您已经发现了 systrace 必须告诉您的关键信息:在 pid 527 中,performTraversals需要 20 多毫秒。这似乎在getDisplayList和之间平均分配drawDisplayList

如果您查看Falcon Pro 案例研究,您会发现许多相似之处,尽管在这种情况下,大部分时间都花在了绘图上(因为严重透支)。不过,该文章中描述的大多数技术通常都很有用;使用traceviewhierarchyviewer设备上的开发人员选项来查找低悬而未决的性能问题。

如果您想在 systrace 中查看您自己的方法,您可以从 Android 4.3 开始添加您自己的应用程序特定标签。这里有一个例子。

于 2013-09-10T17:26:11.127 回答