I agree for the most part.
I took the liberty of changing it a bit more:
* added a DefaultTdLogger constructor that accepts the RepeatingWorker's interval
** the interval is passed on to the AbstracTdLogger constructor to then call flushWorker's setInterval method and set its worker's interval
** the same interval is used to call the static method TdLoggerService#setUploadInterval before calling startService to start the service. I made the TdLoggerService#setUploadInterval only accessible to the DefaultTdLogger class through a private object that only that class can instantiate (see "Here is a small trick that I use in JAVA to replicate C++ friend mechanism." in http://stackoverflow.com/questions/182278/is-there-a-way-to-simulate-the-c-friend-concept-in-java)

I though that allowing the TdLoggerService#setUploadInterval method could be misleading since the intervalMillis static variable is only used when the TdLoggerService#onStartCommand is executed; therefore if the user was to call the TdLoggerService#setUploadInterval method after, the new internal would never take effect.