我有一系列复杂的视图显示在屏幕上,我还需要在运行时动态切换视图,我这样做是通过删除视图和添加新视图(有时只是设置visiblility)。
现在问题是视图需要花费大量时间(超过7-8秒)。
我已经在我的方法中加入了时间戳,而且所有这些都很快就会返回。但即使在我的最后一个方法返回后,视图也不会呈现,我必须等待才能看到它实际显示。在此之后用户界面非常反应迟钝,我经常得到ANR
。
任何人都可以指出为什么这么迟钝?
我正在使用Drawable.createFromPath()
在运行时从文件系统加载大量图像。这可能是问题吗?
答案 0 :(得分:1)
我找到了相同的解决方案,并将其发布给面临类似问题的任何人。问题是由于深层嵌套视图。由于布局相当复杂,因此视图嵌套得相当深。在经过一定程度的14-15之后,性能开始大幅降低。在合并一些存根布局(占位符等)时,性能得到了极大的改善。层次结构查看器在调试此问题时非常有用。 更多的观察是: 1.嵌套时的相对布局非常慢,而LinearLayouts则不是那么多。 2.在对话框中使用时,或者在深层嵌套的相对布局中触发时,软键盘会缓慢(层次结构主要由相对布局组成。)
答案 1 :(得分:0)
应用程序变得迟缓的原因之一是当您在UI线程中花费一些时间来消耗非UI活动时。我建议您仔细查看代码并确定所有活动需要花费时间,然后您可以使用AsyncTask
来执行这些活动。
有关详细信息,请参阅此链接: http://developer.android.com/reference/android/os/AsyncTask.html