1. StackTraceElement element = Thread.currentThread().getStackTrace()[4];
返回一个表示该线程堆栈转储的堆栈跟踪元素数组。如果该线程尚未启动或已经终止,则该方法将返回一个零长度数组。如果返回的数组不是零长度的,则其第一个元素代表堆栈顶,它是该序列中最新的方法调用。最后一个元素代表堆栈底,是该序列中最旧的方法调用。
如果有安全管理器,并且该线程不是当前线程,则通过RuntimePermission("getStackTrace")权限调用安全管理器的checkPermission方法,查看是否可以获取堆栈跟踪。
某些虚拟机在某些情况下可能会从堆栈跟踪中省略一个或多个堆栈帧。在极端情况下,没有该线程堆栈跟踪信息的虚拟机可以从该方法返回一个零长度数组。
返回:
StackTraceElement数组,每个数组代表一个堆栈帧。
抛出:
SecurityException- 如果安全管理器存在,并且其checkPermission方法不允许获取线程的堆栈跟踪。
(以上为copy)说白了这个函数返回的是你的方法调用的顺序,只不过以栈的形式展示出来的,
例如下面:
结果显示:
可以看出来MyLog.e 的调用顺序,第4个元素是我们想要的,所以我们在取得时候只需要:
StackTraceElementelement = Thread.currentThread().getStackTrace()[4];
即可
打印结果为:
Log.e(tag,msg,Throwable);
网友评论