? ? 在排查問題時我們常常迷失在錯綜復(fù)雜的方法調(diào)用中世吨,特別是做系統(tǒng)開發(fā)拍顷,模塊關(guān)系尤其復(fù)雜。今天介紹 android.util.Log 的一個方法 getStackTraceString眶俩,可以幫助我們理清調(diào)用關(guān)系逻锐。
? ? 用法如下:Log.i(TAG,Log.getStackTraceString(new Throwable()));。我們寫一個簡單的例子來看看它的使用泣棋,例子很簡單胶哲,定義一個按鈕,點擊按鈕后調(diào)用 test 方法:
private void test() {
? ? Log.i(TAG,Log.getStackTraceString(new Throwable()));
}
??? 打印出的結(jié)果如下:
HelloActivity: java.lang.Throwable
HelloActivity:?????at com.example.android.helloactivity.HelloActivity.test(HelloActivity.java:86)
HelloActivity:?????at com.example.android.helloactivity.HelloActivity.onClick(HelloActivity.java:80)
HelloActivity:?????at?android.view.View.performClick(View.java:5675)
HelloActivity:?????at?android.view.View$PerformClick.run(View.java:22641)
HelloActivity:?????at?android.os.Handler.handleCallback(Handler.java:836)
HelloActivity:?????at?android.os.Handler.dispatchMessage(Handler.java:103)
HelloActivity:?????at?android.os.Looper.loop(Looper.java:203)
HelloActivity:?????at android.app.ActivityThread.main(ActivityThread.java:6347)
HelloActivity:?????at?java.lang.reflect.Method.invoke(Native?Method)
HelloActivity:?????at? com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
HelloActivity:?????at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
??? 可以看到它把 test 方法的整個調(diào)用過程打印了出來潭辈,是不是很有用鸯屿?