<>关于getStackTrace()
public StackTraceElement[] getStackTrace()
返回一个表示该线程堆栈转储的堆栈跟踪元素数组。如果该线程尚未启动或已经终止,则该方法将返回一个零长度数组。如果返回的数组不是零长度的,则其第一个元素代表堆栈顶,它是该序列中最新的方法调用。最后一个元素代表堆栈底,是该序列中最旧的方法调用。
<>android/java 调用栈
将以下代码加入被调用的函数中即可
for (StackTraceElement i : Thread.currentThread().getStackTrace()) { System.out
.println("TAG " +i); }
<>Android简单日志封装,类名+方法名为Tag
Android的日志类使用方式一般为
Log.e(TAG,msg)
Tag值的命名一般都让人头疼,常见的做法是将Tag设为类名,但每次要打log都得给类设置一个TAG变量,写着很烦人。此篇的目的便是解决此问题,将TAG的命名抽取出来,我们只需要关心Log的msg即可。
public class LogUtils { public static void d(String msg) { Log.e(getCallerInfo(
), msg); } private static String getCallerInfo() { StackTraceElement[]
stackTrace= Thread.currentThread().getStackTrace(); //0
VMStack.getThreadStackTrace //1 Thread.getStackTrace //2 LogUtil.getCallerInfo
//3 LogUtil.e //4 Caller StackTraceElement caller = stackTrace[4]; return caller
.getClassName() + " " + caller.getMethodName() + " " + caller.getLineNumber(); }
}
其他级别日志类似补充即可,使用方法:
LogUtils.d("hello world!")