Continuously execute runnables on the UI thread
Your variable names could be more clear.  h is a poor choice, for example.  loop is probably not a great name for a method either - maybe startLoop?
You have inconsistent code style.  Some one-line if blocks are in curlies while others are not.
Why final Runnable first?  It's fine if you want to use final wherever possible, but that doesn't appear to be the case with the rest of the code, and there's no explicit reason for it be final, so what is the strategy here?
I'd save the Runnable you pass to postDelayed as an instance member instead of creating a new one each time.
Why do you use an explicit this in this.breakLoop.set, but nowhere else?  I'd choose one or the other.
If you've got those tests to ensure everything is happening on the main thread, then why h.post(first)?  Wouldn't first.run() to the same thing?