【问题标题】:Android Profiler Thread and Process Look up by IdAndroid Profiler 线程和进程按 Id 查找
【发布时间】:2021-03-12 19:19:55
【问题描述】:

我正在尝试使用 Android Studio 的分析器工具之一来调试我的应用程序。

我正试图准确地找到我的 CameraActivity 的主线程在跟踪文件中的位置。

我正在使用 perfetto UI 以将跟踪作为网页打开。 请看附图

我发现我可以缩小到我的包裹。但是我试图找到实际的主线程。特别是它可能导致内存泄漏的处理程序。

为了获取进程Id和线程Id,我把这个Log.d调用放在了Handler的handleMessage方法里面。

Log.d("iinnside_","see: " + yes.getLooper().getThread().getId() + " string: "+
                    yes.getLooper().getThread().toString());

这个 Log.d 调用给了我结果:

20815-20815 D/iinnside_:参见:2 字符串:Thread[main,5,main]

据我了解,根据我的日志配置输出数字:20815-20815 代表我需要的过程和Id。但是我无法通过 perfetto UI 显示找到它们。除了, 根据上面的 Log.d 调用,主线程的 id = 2。

在软件工程中,必须为应用程序的主线程分配一个公用编号最常用的数字是什么?

如何理解我的应用线程上的这些进程 ID?

【问题讨论】:

    标签: android android-studio testing android-profiler


    【解决方案1】:

    在 Linux(当然还有 Android)上,主线程 ID 与进程 ID (PID) 相同。在您的示例中,20815 是应用的 pid 和主线程 ID。

    我不知道你的yes 对象是如何实例化的,但它看起来像一个Handler,它与Looper 相关联并在Looper 的线程上运行,与主线程不同.碰巧线程的 id = 2。

    顺便说一句,您的屏幕截图显示了系统跟踪的旧 UI。如果在新的 Perfetto trace viewer 中打开或导入到Android Studio profilers 中,应该可以更清楚地看到线程 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-05
      • 2019-02-15
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      相关资源
      最近更新 更多