gpt4 book ai didi

android - 主线程使用

转载 作者:行者123 更新时间:2023-11-29 14:54:47 25 4
gpt4 key购买 nike

我正在尝试确定是什么降低了我的应用程序的性能,并且我正在调查是什么垄断了主线程。

我刚刚发现 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com