I saw this line of code in TeaTimer:

   private final String TAG = getClass().getSimpleName();

instead of the usual

   private static final String TAG = "FooActivity";

This has the advantage of loading the class name instead of hardcoding
it, but adds great runtime complexity --- every instantiation of the
class requires more work and allocation, instead of a constant string
that is stored once and pointed to at compile time.

A different class in the project has

   private static final String TAG = TimerPrefActivity.class.getSimpleName();

which only has the extra cost of class initialization and of not being a
compile-time constant.

If the field were protected, then inheritance could kick in and let
TAG be initialized with the name of the child class, but no one wants
a field as part of the API.

In a language like Ruby, you could inject the logging methods into every
class and automatically use the class name for the tag. I'm chalking up
the TAG convention as another idiosyncrasy of Java.