昨天,我花了 12 个小时成为 Traceview 的学生。在此之前,我什至不知道它存在(羞愧地垂头丧气)。
现在我已经克服了它产生的数据的绝对冲击,我发现 Traceview 可以归结为几个简单的概念:
- 按“EXCL CPU TIME”排序,以确定每个单独方法单独使用的使用量。
- 查看调用频率和每次调用的 CPU 时间/实时时间。显然应该研究更高的调用。根据我的大部分经验,如果您按上面的 #1 排序,调用过多且花费过多时间的方法也将位于列表的顶部(因为它们也使用最多的 CPU 是有道理的)。
无论如何,执行上面的这两个步骤,我发现 3-4 种方法总是使用我 90% 的 CPU 并占用我应用程序中的大部分实时延迟。唯一的问题是,这些方法都不是我写的方法,它们是系统方法,例如:
- BitmapFactory 方法
- WebKit 方法
- 和其他系统方法
话虽如此,假设如果顶级资源消耗是系统方法,那么它一定与我的布局设计有关吗?我不知道 BitmapFactory 怎么可能这么高,我的布局并不是非常复杂,尽管在一个 Activity 中 BitmapFactory 本身占用了 95% 的资源。
TL;DR - 如果我运行 Traceview,并且如果我发现最重要的资源都是系统方法,这是否意味着这是一个布局问题?或者,我怎么能说出为什么系统方法如此之高,因为它与我的自定义方法没有直接关系。
非常感谢,瑞安