Comment gérer les Loopers et Threads (thread ne meurt pas plus!)

J'ai créé une classe étendant Fil pour récupérer l'emplacement de l'utilisateur par le biais de LocationManager dans un non-thread d'interface utilisateur. J'ai mis en place ce qu'un thread, car il doit être démarré sur demande et faire son travail juste pour un temps limité.
En passant, j'ai dû ajouter un Looper objet dans le thread, pour être en mesure de créer le gestionnaire de l'LocationManager (onLocationChanged).

C'est le code:

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
}

//...}

Je voudrais que le thread pour commencer, recevoir de l'utilisateur des données de localisation (dans ce cas il y a un moment), envoyer les données vers le thread principal par l'intermédiaire d'un message au gestionnaire, et puis mourir.
Le problème est que dans mon cas, le thread ne pas mourir de plus, une fois la méthode run terminé (qui devrait être bon, parce que sinon onLocationChanged de ne pas recevoir les nouveaux emplacements).

Mais de cette manière, en supposant que le fil de l'arrêter et suspendre les méthodes sont obsolètes, ce serait un bon moyen, dans ce cas, au moins, de faire un thread avec un looper de mourir?

Merci d'avance 😉

OriginalL'auteur e-cal | 2011-06-08