2011-09-21 26 views
7

Dobrze, co zasadniczo robię, to aplikacja, która ma wiele działań. Mam kilku przyjaciół z telefonami z Androidem i dałem im aplikację do testowania. Czasami jednak przechodzi w niekończące się cykle i wykonuje dziwne zachowania, których nie jestem w stanie zrozumieć z powodu braku doświadczenia w programowaniu i braku możliwości zrzutu logcat w tych konkretnych momentach.Uzyskaj nazwę aktualnie wykonywanej metody.

Potrzebne jest więc stworzenie statycznego, zawsze widocznego okna, prawdopodobnie okna wyskakującego, które pokazuje, w której metodzie jest teraz program.

Moje pytanie brzmi: jaki jest najlepszy sposób na uzyskanie tej funkcjonalności i jak odzyskać obecną metodę, w której znajduje się aplikacja (ma kilka wątków).

+0

proszę wyjaśnić swoje pytanie. – user370305

+0

Czy Android może wysyłać wątki? To może okazać się bardzo przydatnym narzędziem do debugowania. –

+1

możliwy duplikat [Uzyskiwanie nazwy obecnej metody wykonywania] (http://stackoverflow.com/questions/442747/getting-nazwa-na-przekazanie-przeczytywania-modalnego) –

Odpowiedz

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

Można spróbować to:

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

Powróci tak:
ClassName.methodName():123

+6

Uwaga: nie trzeba * wyrzucić * wyjątek ', aby uzyskać jego stacktrace:' new Exception(). getStackTrace() [0] 'powinno działać dobrze. –

+0

Oczywiście. To właśnie dostaję za kodowanie bez kompilowania :) –

2

na urządzeniu to - Thread.currentThread().getStackTrace()[2].getMethodName()

(nie [1], ale [2])

+0

Sprawdź inne pytanie i moją odpowiedź stackoverflow.com/a/8592871/658826 - ten daje właściwą nazwę metody bez względu na indeks. – virgo47