在你的代码处,通过
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());
}
上面是打印堆栈信息
下面是打印当前类名,和上一个类名
点击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