Java 如何精确定位什么';它正在放缓Android应用程序的速度

Java 如何精确定位什么';它正在放缓Android应用程序的速度,java,android,performance,Java,Android,Performance,我对Android(以及Java)开发还不熟悉。我认为我做得很好——我有一个应用程序,可以读取XML文件,解析到SQLite数据库,从数据库中提取数据以填充不同的站点部分(可滚动的新闻条目列表)……等等。我正在为导入过程使用AsyncTasks…等等 但是-我的应用程序在第一次加载时需要花费永远的时间(15-25)秒,每次切换部分(将单个XML文件解析到SQLite数据库中,并填充listView)需要大约10秒 与iPhone应用程序相比,它需要2-3秒来切换分区 TLDR: 如何确定是什么原

我对Android(以及Java)开发还不熟悉。我认为我做得很好——我有一个应用程序,可以读取XML文件,解析到SQLite数据库,从数据库中提取数据以填充不同的站点部分(可滚动的新闻条目列表)……等等。我正在为导入过程使用AsyncTasks…等等

但是-我的应用程序在第一次加载时需要花费永远的时间(15-25)秒,每次切换部分(将单个XML文件解析到SQLite数据库中,并填充listView)需要大约10秒

与iPhone应用程序相比,它需要2-3秒来切换分区

TLDR:
如何确定是什么原因导致我的应用程序运行缓慢?是否有一个线程监视器或其他什么东西,可以通过某种方式查看除了将Log.d()放在各处以外的花费了这么长时间的内容?

请检查

这是一个非常好的工具,可以让你看到你的应用程序在方法层面的花费时间。我不能在这里描述它。按照链接看一看


您也可以查看,但这更多是为了找出应用程序的UI没有响应的原因。

我认为traceView包含的信息太多,您很容易迷路

我的解决方案是在代码中的三个位置记录系统时间

之前和之后,以潜在的慢代码为中心


像二进制搜索一样,下次,一步一步缩小搜索范围,然后最终找到罪魁祸首代码。

如果您将eclipse与ADT插件一起使用,则应该有一个调试过程。。。我没怎么用过。安卓系统是否也和iOS一样古老?iOS用户的升级速度往往比Android用户快得多(总的来说),但也不奇怪为什么一个3岁的Android没有最新的iPhoneRuss那么快——我感谢你的时间,但你的评论与这个问题完全无关(而且没有意义,因为显然这两个应用程序的代码并不相同)你能给我一些指示吗?这个链接有我见过的最简单的说明。我在命令提示符下找到了工具目录。。。但现在我正试图遵循它的“用法:”注释,并不断得到“错误:无法找到或加载主类…”这里有一个详细说明的页面。对不起,我不打算在这里花时间写比谷歌更好的文档。如果他们能给出你可以真正遵循的指令,而不是关于“如何使用代码”的概括,那当然好了……但这似乎是答案。。。在事情变得有意义之前,我只能把它弄得一团糟。谢谢(+1现在-如果这仍然是几天内的最佳答案,将标记为答案)谢谢-这对我的需求非常有效。虽然Jeffery的答案可能更深入,一些人也需要,但对我来说,这种方法只需30秒,而不必学习所有traceview的混乱。要想让它起作用,你需要在找到问题之前知道问题在哪里。我想你会通过艰苦的方式了解到这一点,但你的应用程序速度缓慢的原因并不明显。traceview是专门为此目的而发明的,你认为在代码块周围放置计时器是更好的方法吗?