Sorry, not being a musician I don't know how accurate a metronome should be and thought that a few milliseconds uncertainty might be might be putting your drummer off his beat
I think you've found a bug. If you set the interval when you initialise the Timer to that which you first use then it behaves properly. Similarly if you stop and restart it it's OK. However if you initialise it with one value, then set the interval to another value you get two ticks per interval instead of one
@Erel - Look at the app in the first post. If the new interval is different to the old setInterval() calls startTicking() which then does an unwanted BA.handler.postDelayed(tt, interval) so it goes wrong when when run() does this as well.
EDIT :- I might not have got the mechanism right but something odd is happening.