Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检测性能问题的原因?_Android_Performance_Debugging - Fatal编程技术网

Android 检测性能问题的原因?

Android 检测性能问题的原因?,android,performance,debugging,Android,Performance,Debugging,我有一个android应用程序,它现在变得相当大和复杂,而且似乎有间歇性的性能问题。有一次我会运行应用程序,它很好,另一次它会在切换视图时挣扎 如何使用调试工具检测性能问题的原因,以便进行纠正?使用SDK附带的ddms工具。它有一个很好的特性,叫做分配跟踪器,它允许您实时查看代码消耗了多少内存,以及是哪一行导致了这种情况 大多数情况下,您的应用程序都会因适配器实现不好、布局膨胀技术不好或未使用缓存系统解码位图(例如使用SoftReference)而变慢 请看这篇文章以获得简要说明: 除了克里斯蒂

我有一个android应用程序,它现在变得相当大和复杂,而且似乎有间歇性的性能问题。有一次我会运行应用程序,它很好,另一次它会在切换视图时挣扎


如何使用调试工具检测性能问题的原因,以便进行纠正?

使用SDK附带的
ddms
工具。它有一个很好的特性,叫做分配跟踪器,它允许您实时查看代码消耗了多少内存,以及是哪一行导致了这种情况

大多数情况下,您的应用程序都会因适配器实现不好、布局膨胀技术不好或未使用缓存系统解码
位图(例如使用SoftReference)而变慢

请看这篇文章以获得简要说明:


除了克里斯蒂安提到的工具之外,还有一个很有用的工具。它没有很好的文档记录,但它可以提供有关调用方法的频率以及哪些方法花费大量时间的信息

另一个很好的内存跟踪工具是,这里有一个页面描述了如何在Android上使用它:


如果您不想使用命令行,则可以通过DDMS面板完成跟踪和堆转储。在Eclipse中,在设备面板中,在您正在使用的设备/仿真器下,单击您的应用程序(按包名列出),然后您可以启动/停止方法评测以获取跟踪,并可以使用Dump HPROF获取堆转储。注意,转储需要转换为使用MAT插件。上面android上的攻击性内存问题描述了如何做到这一点。

完成克里斯蒂安的回答。Java/Android=hiccup中的分配由于垃圾收集器的启动而中断。因此,除非你真的需要,否则尽量避免创建新对象。还有一个新的
StrictMode
应该很有用,它将确保你在主线程上不会做太密集的事情。