package cn.mutils.core.runtime;
/**
* Stack trace utility of framework.<br>
* Using Throwable.getStackTrace() to replace
* Thread.currentThread().getStackTrace() because of the following bug<br>
* <p>
* Android environment stack trace:<br>
* dalvik.system.VMStack.getThreadStackTrace<br>
* java.lang.Thread.getStackTrace<br>
* cn.mutils.app.runtime.StackTraceUtil.getCallerElement<br>
* ... ....<br>
* <p>
* <p>
* Java standard environment stack trace:<br>
* java.lang.Thread.getStackTrace<br>
* cn.mutils.app.runtime.StackTraceUtil.getCallerElement<br>
* ... ...
*/
@SuppressWarnings("unused")
public class StackTraceUtil {
/**
* Get stack trace element for the current method
*/
public static StackTraceElement getCurrentElement() {
StackTraceElement[] elements = new Throwable().getStackTrace();
return 1 < elements.length ? elements[1] : elements[elements.length - 1];
}
/**
* Get stack trace element for the method who call you
*/
public static StackTraceElement getCallerElement() {
StackTraceElement[] elements = new Throwable().getStackTrace();
return 2 < elements.length ? elements[2] : elements[elements.length - 1];
}
}