我有一系列复杂的视图显示在屏幕上,我还需要在运行时动态地在视图之间切换,这是通过删除视图和添加新视图来实现的(有时只是设置可见性)。
现在的问题是,视图需要非常长的时间来渲染(超过7-8秒)。
我已经在我的方法中添加了时间戳,它们似乎都返回得相当快。但是,即使在我的最后一个方法返回之后,视图也不会呈现,我必须等待看到它实际显示。在那之后,UI变得相当迟钝,我经常收到ANR。
有谁能指出为什么它如此迟缓?
我在运行时使用Drawable.createFromPath()从文件系统加载了大量图像。这会是问题所在吗?
发布于 2012-06-29 15:34:46
我已经找到了一个相同的解决方案,并将其发布给任何面临类似问题的人。这个问题是由于视图的深度嵌套造成的。由于布局相当复杂,视图嵌套得相当深。在达到某个级别14- 15之后,性能开始急剧下降。合并一些存根布局(占位符等)性能有了很大的提高。层次结构查看器在调试此问题时非常有用。更多的观察结果是: 1.相对布局在嵌套时相当慢,而LinearLayouts则不是很慢。2.软键盘在对话框中使用或触发形成深度嵌套的相对布局(层次结构主要由相对布局组成)时反应迟缓。
发布于 2012-06-11 02:53:58
应用程序变慢的原因之一是当您在UI线程中执行一些耗时的非UI活动时。我建议您仔细查看您的代码,确定哪些活动需要时间,您可以使用AsyncTask来执行这些活动。
有关更多信息,请参阅此链接:http://developer.android.com/reference/android/os/AsyncTask.html
https://stackoverflow.com/questions/10971419
复制相似问题