- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试确定是什么降低了我的应用程序的性能,并且我正在调查是什么垄断了主线程。
我刚刚发现 Looper.setMessageLogging
并正在设置一个客户 Printer
以查看主线程的使用情况:
Looper.getMainLooper().setMessageLogging(new LogPrinter(Log.DEBUG, "MainLooper")) {
private long startTime = 0L;
@Override
public void println(String x) {
if (x.startsWith(">")) {
startTime = System.nanoTime();
} else if (x.startsWith("<")) {
final long duration = System.nanoTime() - startTime;
x += " (" + (duration / 1000000L) + " ms)";
}
super.println(x);
}
});
这让我发现,是的,有很多代码耗时超过 500 毫秒,有些代码几乎耗时 1 秒,这可能就是性能如此糟糕的原因。
D/MainLooper( 1542): >>>>> Dispatching to Handler{433ae6a0} null: 1000
D/MainLooper( 1542): <<<<< Finished to Handler{433ae6a0} null (952 ms)
不过,现在我要弄清楚这些日志消息了。我不知道什么方法在主线程上花费了 952 毫秒。有没有更好的方法来查明花费这么长时间的方法?
最佳答案
查看 THIS有关使用方法分析来确定您的应用运行缓慢的地方的文章。
如果您使用的是 Eclipse:在 DDMS 选项卡中,您会在“设备”窗口中看到一个按钮,上面有一些箭头和一个红色记录图标。这是“开始方法分析”按钮。单击此按钮并启动您的应用程序并执行导致速度下降的操作。完成后,再次单击该图标以停止录制。给它几秒钟的时间从您的手机中提取结果,它会向您显示一个漂亮的时间轴,显示调用了哪些方法以及它们花费了多长时间。使用它,您可以跟踪哪些方法花费的时间最长,并有望减少您应用的开销。
关于android - 主线程使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8901937/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!