java.lang.StackTraceElement类

来源:互联网 发布:mac androidsdk 编辑:程序博客网 时间:2024/05/16 06:50

StackTraceElement简介

public final class StackTraceElement

  extends   Object       implements   Serializable

堆栈跟踪中的元素,它由 Throwable.getStackTrace() 返回。每个元素表示单独的一个堆栈帧。所有的堆栈帧(堆栈顶部的那个堆栈帧除外)都表示一个方法调用。堆栈顶部的帧表示生成堆栈跟踪的执行点。通常,这是创建对应于堆栈跟踪的 throwable 的点。

方法摘要
boolean equals(Object obj)
如果指定的对象是另一个 StackTraceElement 实例,并且该对象表示的执行点与该实例的相同,则返回 ture。
String getClassName()
返回类的完全限定名,该类包含由该堆栈跟踪元素所表示的执行点。
String getFileName()
返回源文件名,该文件包含由该堆栈跟踪元素所表示的执行点。
int getLineNumber()
返回源行的行号,该行包含由该堆栈该跟踪元素所表示的执行点。
String getMethodName()
返回方法名,此方法包含由该堆栈跟踪元素所表示的执行点。
int hashCode()
返回此堆栈跟踪元素的哈希码值。
boolean isNativeMethod()
如果包含由该堆栈跟踪元素所表示的执行点的方法是一个本机方法,则返回 true。
String toString()
返回表示该堆栈跟踪元素的字符串。

代码演示

import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class MainActivity extends Activity implements View.OnClickListener {    Button btnTest;    private final static String TAG = "test";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btnTest = (Button) findViewById(R.id.btn_test);        btnTest.setOnClickListener(this);    }    @Override    public void onClick(View v) {        if (v.getId() == R.id.btn_test) {            method();        }    }    public void method() {        // 获取当前线程的堆栈跟踪元素        StackTraceElement[] stacks = Thread.currentThread().getStackTrace();        // 遍历获取到的堆栈跟踪元素        for (int i = 0; i < stacks.length; i++) {            Log.i(TAG, "------------------element" + i + "-----------------");            Log.i(TAG, stacks[i].getFileName() + "");            Log.i(TAG, stacks[i].getClassName() + "");            Log.i(TAG, stacks[i].getMethodName() + "");            Log.i(TAG, stacks[i].getLineNumber() + "");        }    }}

布局文件中只有一个id为btn_test的Button,这里就不粘了。执行上述的代码可得到如下Log:

08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element0-----------------08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ VMStack.java08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ dalvik.system.VMStack08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ getThreadStackTrace08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ -208-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element1-----------------08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ Thread.java08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ java.lang.Thread08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ getStackTrace08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ 57908-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element2-----------------08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ MainActivity.java08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ com.lyong.coreandroid.MainActivity08-06 11:20:35.407  14595-14595/com.lyong.coreandroid I/test﹕ method08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ 3408-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element3-----------------08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ MainActivity.java08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ com.lyong.coreandroid.MainActivity08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ onClick08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ 2808-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element4-----------------08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ View.java08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ android.view.View08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ performClick08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ 444408-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element5-----------------08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ View.java08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ android.view.View$PerformClick08-06 11:20:35.427  14595-14595/com.lyong.coreandroid I/test﹕ run08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ 1844008-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element6-----------------08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ Handler.java08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ android.os.Handler08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ handleCallback08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ 73308-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element7-----------------08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ Handler.java08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ android.os.Handler08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ dispatchMessage08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ 9508-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element8-----------------08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ Looper.java08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ android.os.Looper08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ loop08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ 13608-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element9-----------------08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ActivityThread.java08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ android.app.ActivityThread08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ main08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ 504708-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element10-----------------08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ Method.java08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ java.lang.reflect.Method08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ invokeNative08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ -208-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element11-----------------08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ Method.java08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ java.lang.reflect.Method08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ invoke08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ 51508-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element12-----------------08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ZygoteInit.java08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ com.android.internal.os.ZygoteInit$MethodAndArgsCaller08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ run08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ 80608-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element13-----------------08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ZygoteInit.java08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ com.android.internal.os.ZygoteInit08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ main08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ 62208-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ ------------------element14-----------------08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ NativeStart.java08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ dalvik.system.NativeStart08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ main08-06 11:20:35.437  14595-14595/com.lyong.coreandroid I/test﹕ -208-06 11:21:35.787  14595-14595/com.lyong.coreandroid W/IInputConnectionWrapper﹕ getCursorCapsMode on inactive InputConnection08-06 11:26:20.417  14595-14595/com.lyong.coreandroid I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@42ec4400 time:71641141

根据日志可以清晰的看到,下标为2的信息就是我们自己所写代码的信息。xUtils的Log工具类就使用到了这个类,可以输出tag为”类名.方法名(line:行号)“格式的Log,例如:MainActivity.method(line:34)

第一篇技术文章就写到这里,之后会更加努力,写出更完善、更详细的文章。

0 0
原创粉丝点击