Log技巧 打印上一个类名 调用流程 堆栈信息

在你的代码处,通过 Thread.currentThread().getStackTrace() 得到一个 StackTraceElement 数组,然后打印该数组。
示例1
StackTraceElement st[]= Thread.currentThread().getStackTrace();
for(int i=0;i<st.length;i++)
System.out.println(i+":"+st[i]);
这样你就把此处代码此时的调用层次(调用栈)打印出来了。

public class MainActivity extends ActionBarActivity {

    Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button) findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });
    }


注意:
getRunningTasks
要添加权限
<uses-permission android:name="android.permission.GET_TASKS"/>
public class SecondActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        StackTraceElement st[]= Thread.currentThread().getStackTrace();
        for(int i=0;i<st.length;i++)
            Log.e("SecondActivity",i + ":" + st[i]);

        ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> runningTasks = manager .getRunningTasks(1);
        ActivityManager.RunningTaskInfo cinfo = runningTasks.get(0);
        ComponentName component1 = cinfo.topActivity;
        ComponentName component2 = cinfo.baseActivity;
        Log.e("current activity is ", component1.getClassName());
        Log.e("last activity is ", component2.getClassName());

    }

打印两段LOG:
上面是打印堆栈信息
下面是打印当前类名,和上一个类名


点击button跳到第二个SecondActivity
打印Log:
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 0:dalvik.system.VMStack.getThreadStackTrace(Native Method)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 1:java.lang.Thread.getStackTrace(Thread.java:579)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 2:com.example.administrator.loglearning.SecondActivity.onCreate(SecondActivity.java:21)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 3:android.app.Activity.performCreate(Activity.java:5310)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 4:android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 5:android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2179)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 6:android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 7:android.app.ActivityThread.access$800(ActivityThread.java:136)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 8:android.app.ActivityThread$H.handleMessage(ActivityThread.java:1219)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 9:android.os.Handler.dispatchMessage(Handler.java:102)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 10:android.os.Looper.loop(Looper.java:136)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 11:android.app.ActivityThread.main(ActivityThread.java:5032)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 12:java.lang.reflect.Method.invokeNative(Native Method)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 13:java.lang.reflect.Method.invoke(Method.java:515)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 14:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 15:com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/SecondActivity﹕ 16:dalvik.system.NativeStart.main(Native Method)
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/current activity is﹕ com.example.administrator.loglearning.SecondActivity
04-09 23:04:52.559  19159-19159/com.example.administrator.loglearning E/last activity is﹕ com.example.administrator.loglearning.MainActivity






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值