Como gerenciar Loopers e Threads (o thread não morre mais!)

Criei uma classe estendendo o Thread para recuperar a localização do usuário através do LocationManager em um thread que não seja da interface do usuário. Eu implementei isso como um encadeamento, porque ele deve ser iniciado mediante solicitação e fazer seu trabalho apenas por um tempo limitado. A propósito, eu tive que adicionar um objeto Looper no thread, para poder criar o manipulador para o LocationManager (onLocationChanged).

Este é o código:

public class UserLocationThread extends Thread implements LocationListener {
//...
public void run() {
    try {
        Looper.prepare();
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
        Looper.loop();
        Looper.myLooper().quit();
    } catch (Exception e) {
        //...
    }
}

@Override
public void onLocationChanged(Location location) {
    locationManager.removeUpdates(this);
    //...
    handler.sendMessage(msg); //this is the handler for communication with father thread
}

//...}

Gostaria que o encadeamento iniciasse, recebesse os dados de localização do usuário (neste caso, apenas uma vez), envie os dados para o encadeamento principal por meio de uma mensagem para o manipulador e depois morra. O problema é que, no meu caso, o encadeamento não morre mais, uma vez que o método run terminou (isso deve ser bom, porque caso contrário onLocationChanged não receberia os novos locais).

Mas assim, assumindo que os métodos de parada e suspensão de threads estão obsoletos, qual seria uma boa maneira, pelo menos nesse caso, de fazer um thread com uma matriz de loope

Desde já, obrigado ;

questionAnswers(5)

yourAnswerToTheQuestion