2011-09-21 28 views
7

Bueno, básicamente lo que estoy haciendo es una aplicación que tiene muchas actividades. Tengo algunos amigos con teléfonos Android y les di la aplicación para probar. Sin embargo, a veces entra en ciclos interminables y tiene un comportamiento extraño que no puedo entender debido a su falta de experiencia en programación y la incapacidad de volcar el logcat en esos momentos particulares.Obtener el nombre del método actual que se está ejecutando

Entonces, lo que tengo que hacer es crear una ventana estática siempre visible, probablemente ventana emergente, que muestra en qué método está el programa ahora.

Así que mi pregunta sería, cuál es la mejor manera de lograr esta funcionalidad y cómo recuperar el método actual de la aplicación (tiene varios hilos).

+0

favor aclarar su pregunta. – user370305

+0

¿Puede Android tirar volcados? Esto podría ser una herramienta de depuración muy útil. –

+1

posible duplicado de [Obteniendo el nombre del método de ejecución actual] (http://stackoverflow.com/questions/442747/getting-the-name-of-the-current-executing-method) –

Respuesta

7
Thread.currentThread().getStackTrace()[1].getMethodName() 
7

Puede probar esto:

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

volverá algo como esto:
ClassName.methodName():123

+6

Nota: usted no necesita * throw * an 'Exception' para obtener su stacktrace: 'new Exception(). getStackTrace() [0]' debería funcionar bien. –

+0

Por supuesto. Eso es lo que obtengo para codificar sin compilar :) –

6

Hay muchas respuestas para esta si se busca SO. Este es un método simple

String name = new Object(){}.getClass().getEnclosingMethod().getName(); 

Debe consultar esta publicación. Getting the name of the current executing method

+0

Tenga en cuenta que cada uso crea una nueva definición de clase anónima. –

2

en mi dispositivo es - Thread.currentThread().getStackTrace()[2].getMethodName()

(no [1], pero [2])

+0

Verifique otra pregunta y mi respuesta stackoverflow.com/a/8592871/658826 - esta le da el nombre del método correcto, sea cual sea el índice. – virgo47

Cuestiones relacionadas