Java 获取正在执行的当前方法的名称

Java 获取正在执行的当前方法的名称,java,android,thread-safety,Java,Android,Thread Safety,我基本上是在做一个有很多活动的应用程序。我有几个朋友使用安卓手机,我给了他们这个应用进行测试。然而,它有时会进入无休止的循环,并产生奇怪的行为,我无法理解这些行为,因为它们缺乏编程经验,无法在这些特定时刻转储logcat 所以我需要做的是创建一个静态的始终可见的窗口,可能是弹出窗口,显示程序现在使用的方法 所以我的问题是,哪种方法是实现此功能的最佳方法,以及如何检索应用程序所在的当前方法(它有多个线程) 您可以尝试以下方法: public String getCurrentMethod(){

我基本上是在做一个有很多活动的应用程序。我有几个朋友使用安卓手机,我给了他们这个应用进行测试。然而,它有时会进入无休止的循环,并产生奇怪的行为,我无法理解这些行为,因为它们缺乏编程经验,无法在这些特定时刻转储logcat

所以我需要做的是创建一个静态的始终可见的窗口,可能是弹出窗口,显示程序现在使用的方法

所以我的问题是,哪种方法是实现此功能的最佳方法,以及如何检索应用程序所在的当前方法(它有多个线程)

您可以尝试以下方法:

public String getCurrentMethod(){
    try{
        throw new Exception("");
    }catch(Exception e){
        return e.getStackTrace()[0].toString();
    }
    return ""; // This never happens
}
它将返回如下内容:

ClassName.methodName():123

如果您这样搜索,会有很多答案。这是一个简单的方法

String name = new Object(){}.getClass().getEnclosingMethod().getName();
你应该参考这篇文章。

在我的设备上,它是-
Thread.currentThread().getStackTrace()[2].getMethodName()


(不是[1]而是[2])

请澄清您的问题。Android可以进行线程转储吗?这可能是一个非常有用的调试工具。注意:您不需要抛出
异常
来获取它的stacktrace:
new Exception()。getStackTrace()[0]
应该可以正常工作。当然。这就是我在不编译的情况下编码得到的结果:)请注意,每次使用都会创建一个新的匿名类定义。请检查其他问题和我的答案stackoverflow.com/a/8592871/658826-无论索引是什么,这个问题都会为您提供正确的方法名称。
Thread.currentThread().getStackTrace()[1].getMethodName()