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

Nor*_*ert 7 java android thread-safety

我基本上做的是一个有很多活动的应用程序.我有一些Android手机的朋友,我给他们的应用程序进行测试.然而,它有时会进入无限循环并且由于缺乏编程经验而无法在那些特定时刻转储logcat而导致我无法理解的奇怪行为.

所以我需要做的是创建一个静态的永远可见的窗口,可能是弹出窗口,它显示了现在该程序的方法.

所以我的问题是,这是实现此功能的最佳方式,以及如何检索App所处的当前方法(它有多个线程).

Kar*_*ról 10

Thread.currentThread().getStackTrace()[1].getMethodName()
Run Code Online (Sandbox Code Playgroud)


Sky*_*sey 7

你可以试试这个:

public String getCurrentMethod(){
    try{
        throw new Exception("");
    }catch(Exception e){
        return e.getStackTrace()[0].toString();
    }
    return ""; // This never happens
}
Run Code Online (Sandbox Code Playgroud)

它将返回如下内容:
ClassName.methodName():123

  • 注意:你不需要*抛出一个`Exception`来获得它的堆栈跟踪:`new Exception().getStackTrace()[0]`应该可以正常工作. (7认同)

ble*_*enm 6

如果你搜索SO,有很多答案.这是一种简单的方法

String name = new Object(){}.getClass().getEnclosingMethod().getName();
Run Code Online (Sandbox Code Playgroud)

你应该参考这篇文章. 获取当前执行方法的名称