見事にはまりました。

Androidのjava.util.Timer
定期的にTimerTaskを実行してくれる便利なクラスなんですが、
こいつ一回cancel呼ぶと再開できない。
cancelを呼んだ後、scheduleを呼ぶとRuntimeExceptionとなります。

そもそもそういう使い方するものじゃないんだと思いますが・・・。
javadocにも
By calling cancel you can terminate a Timer and its associated thread

と書いているし、resumeとか無いので当たり前っちゃ当たり前なのか・・・。

これ気が付くまでけっこう時間がかかりました。
というか、Timer.javaの実装を確認してようやく気が付いたという・・・。

備忘録という事で。