1

我在屏幕上显示了一系列复杂的视图,我还需要在运行时动态切换视图,我通过删除视图和添加新视图(有时只是设置可见性)来实现。

现在的问题是视图需要花费大量时间来渲染(超过 7-8 秒)。

我在我的方法中添加了时间戳,所有这些似乎都很快返回。但即使在我的最后一个方法返回后,视图也不会呈现,我必须等待它实际显示。在那之后用户界面非常无响应,我ANR经常得到。

谁能指出为什么它如此缓慢?

我在运行时使用Drawable.createFromPath(). 这可能是问题吗?

4

2 回答 2

1

我已经找到了相同的解决方案,并将其发布给面临类似问题的任何人。问题是由于视图嵌套很深。由于布局相当复杂,视图嵌套得相当深。在达到 14-15 级之后,性能开始急剧下降。在合并一些存根布局(占位符等)时,性能得到了极大的改善。层次结构查看器在调试此问题时非常有用。更多的观察结果是: 1. 嵌套时的相对布局非常慢,而线性布局则没有那么多。2. 软键盘在对话框中使用或在深度嵌套的相对布局中触发时反应迟缓(层次结构主要由相对布局组成。)

于 2012-06-29T07:34:45.763 回答
0

应用程序变得迟缓的原因之一是当您在 UI 线程中执行一些耗时的非 UI 活动时。我建议您仔细查看您的代码并确定哪些活动需要时间,您可以使用AsyncTask这些活动来执行这些活动。

有关更多信息,请参阅此链接:http: //developer.android.com/reference/android/os/AsyncTask.html

于 2012-06-10T18:53:58.457 回答