Sì, scusa, mi stavo dimenticando di una cosa: al pause, il periodo corrente cronometrato (il currentTimeMillis() - startTime) deve aggiungersi al lastDiffTime .... non rimpiazzarlo del tutto!
Il lastDiffTime è sostanzialmente la somma di tutti i periodi precedenti.