Этот метод показывает 3 последних точки Метод вызова иерархии в порядке их вызова, игнорируя 2 самых последние методы, которые включают в себя сам следующий метод. Это очень полезно, чтобы поймать иерархию методов в программном модуле, где несколько путей доступа к одному и тому же местоположению.
private static String getRecentSteps() {
String recentSteps = "";
StackTraceElement[] traceElements = Thread.currentThread().getStackTrace();
final int maxStepCount = 3;
final int skipCount = 2;
for (int i = Math.min(maxStepCount + skipCount, traceElements.length) - 1; i >= skipCount; i--) {
String className = traceElements[i].getClassName().substring(traceElements[i].getClassName().lastIndexOf(".") + 1);
recentSteps += " >> " + className + "." + traceElements[i].getMethodName() + "()";
}
return recentSteps;
}
В то время как вы * можете сделать это с кодом, такие как manouti предоставил, я не был бы совершенно удивлен увидеть, если не из-за таких вещей, как встраивание - было бы лучше, чтобы избежать необходимости * * это если все возможно. Чего вы пытаетесь достичь? –
Да. Вы можете получить трассировку стека текущего потока и посмотреть следующий снизу вверх. (Я могу предоставить более подробную информацию, когда я доберусь до реального компьютера, вместо того, чтобы отвечать на мой телефон, или кто-то другой может смело превратить это в ответ). Я бы рекомендовал изменить ваш код, чтобы он не нуждался в этом, поскольку он делает ваш код хрупким. Почему вызывающий абонент просто не передает эту информацию в качестве аргумента? – Krease
Okey, я работаю над модулем Android (Xposed). Мне нужно знать, кто звонит в Android API X. К кому я имею в виду приложение (пакет) и точный метод/класс. Жаль, что мне не пришлось делать этот большой взлом, но пока не знаю, как его упростить. – user2126425