ciao, sono capitato qui in quanto sto sviluppando un'applicazione con specifiche simili. Quello che ti posso dire è che Ricky e 7h38uugg3r (che nome...daaaaai!!!

) ti hanno risposto in maniera più che esaustiva al problema.
Posso darti inoltre due suggerimenti: il primo riguarda l'exception ed è di sviluppare su Eclipse, applicazione consigliata e "sponsorizzata" da Google per sviluppare su Android. Anche se sei libero di fare come credi, se il codice "throw ..." è stato generato automaticamente da NetBeans è un bello scherzetto! Eclipse mette semplicemente un "segnalibro" con //TODO...molto meno invasivo!

Per quanto riguarda invece la domanda iniziale che facevi, quello che mi sento di dirti è che per quello che intendi fare, ovvero fare un update della Location ogni TOT di tempo, il metodo chiave è il
requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener) e basta inserire solo quello nel TimerTask. Per il resto, il LocationListener, il LocationManager ecc li puoi istanziare benissimo all'esterno e al massimo passarli per parametro, oppure metterli globali e private nella classe.
Per farti un esempio io agirei (e sto facendo nella mia applicazione) così:
- la mia Activity (o nel mio caso un Service) implementa la classe LocationListener e quindi tutti i suoi metodi
- all'interno del metodo OnLocationChanged faccio un caching della Location
- chiamo LocationManager.removeUpdates() fermando così il listener
- subito dopo però metto in schedule il TimerTask, a cui assegno il compito di riattivare requestLocationUpdates() dopo un tempo da me fissato...
In tal modo ho il controllo sulla temporizzazione degli aggiornamenti della location e, secondo me, è meno complicato di come stavi facendo tu. Chiedo ai grandi saggi di confermare se ciò che ho detto è cosa buona e giusta o solo una castroneria (in tal caso avvisatemi per tempo che mi torna utile per la mia applicazione!!!

). Buon developing! ^_^