即使使用AsyncTasks,主线程中的性能问题也是如此

时间:2014-03-04 00:27:10

标签: java android multithreading performance android-asynctask

我的主要线程似乎与性能非常差。活动之间的过渡会导致严重的延误。我已将所有Web /位图/文件工作推送到AsyncTasks,但这仍然在发生。我一直在试图找出造成减速的原因。

我的问题是 - 如果主线程使用一个类(比如说ImageDownloader)创建自己的小AsyncTasks(比如ImageDownloadTask),Main会等待ImageDownloader完成它的AsyncTasks(因此会延迟吗?)

我很想发布代码,但这是一个非常大的项目。如果有什么具体的我应该寻找,请告诉我,我一定会分享。

2 个答案:

答案 0 :(得分:0)

如果您还没有这样做,我建议您启用strict mode并在主线程上查找活动。

答案 1 :(得分:0)

检查onCreates和onResumes以查找可能超过一瞬间的任何内容。这包括网络调用,数据库调用,可能有大量迭代的循环,甚至从本地存储的文件读取(从xml读取的SharedPreferences)。还尝试对onCreate执行setContentView方法的时间进行基准测试 - 我相信嵌套的LinearLayouts会导致显着的性能命中,尤其是在复杂的UI结构中。使用LocationProvider获取位置,如果操作不当,也会导致严重的性能问题。

您可能认为在asynctask上传递长时间运行的线程可以很好,但是您还需要在启动这些任务之前检查它,启动它们所需的数据可能需要一段时间才能获取。