Always dreamed to see the stack without your debugger?
Maybe this tutorial will help you with the StackTraceElement Java class.
Of course we are going to use an Android application to see all that on our screen!
Let's get started.
// Badprog.com package com.badprog.android.tutorial.badprogactivity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.WindowManager; import android.widget.TextView; public class MainActivity extends AppCompatActivity { TextView textView_1; BadprogHelper bh = new BadprogHelper(); private int time = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); textView_1 = (TextView) findViewById(R.id.xml_textview_1); final StackTraceElement[] ste = Thread.currentThread().getStackTrace(); int i = 0; i = ste.length - 1; while (i >= 0) { time += 500; bh.generateTimerClassic(textView_1, String.valueOf(i) + " " + ste[i].getMethodName(), time); --i; } bh.generateTimerClassic(textView_1, "\nThe name of this method is: \"" + ste[2].getMethodName() + "()\".", time); } } // end class MainActivity
// Badprog.com package com.badprog.android.tutorial.badprogactivity; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; public class BadprogHelper { private TextView textView_1; /** * Manages a timer each time the method is called. * * @param textView_0 * @param charSequence * @param delay */ public void generateTimerClassic(TextView textView_0, final CharSequence charSequence, long delay) { textView_1 = textView_0; Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { textView_1.append(charSequence + "\n"); } }, delay); } }
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.badprog.android.tutorial.badprogactivity.MainActivity"> <TextView android:id="@+id/xml_textview_1" android:layout_height="wrap_content" android:layout_width="fill_parent" android:scrollbars="vertical" android:textColor="@color/white" android:background="@drawable/back" android:layout_marginTop="10dp" android:layout_marginLeft="10dp" android:padding="10dp" android:textStyle="bold" /> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <!-- view background color --> <solid android:color="@android:color/holo_blue_bright" > </solid> <!-- view border color and width --> <stroke android:width="1dp" android:color="@color/colorPrimaryDark" > </stroke> <!-- The radius makes the corners rounded --> <corners android:radius="2dp" > </corners> </shape>
You are now able to create a debugger from scratch. ;-)
Well done you did it!
Add new comment