A Handler is only valid for a thread that has been initialized as a Looper thread.
The UI thread is a Looper thread, and most android components run on the UI thread, for instance activities, services, content providers, custom application classes and more including any class you instantiate on the UI thread.
Instead of creating handlers you can use:
http://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable)
but if you want to use messages instead you have to use handlers.
When the lint error comes up warning you to make your handlers static it means to use a static nested class instead so you don't get implicit references to the outer class and all its members which can introduce issues in some cases. You can declare your handlers like this to avoid that warning:
static MyHandler extends Handler {
// TODO: implement message handling, etc here
}
private mHandler = new MyHandler();