Как управлять циклами и потоками (поток больше не умирает !)

Я создал класс, расширяющий Thread, для получения местоположения пользователя через LocationManager в потоке, отличном от пользовательского интерфейса. Я реализовал это как поток, потому что он должен запускаться по запросу и выполнять свою работу в течение ограниченного времени. Кстати, мне пришлось добавить объект Looper в поток, чтобы иметь возможность создать обработчик для LocationManager (onLocationChanged).

Это код:

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
}

//...}

Я бы хотел, чтобы поток запустился, получил данные о местоположении пользователя (в данном случае только один раз), отправил данные в основной поток через сообщение обработчику, а затем умер . Проблема в том, что в моем случае поток больше не умирает после завершения метода run (это должно быть нормально, потому что в противном случае onLocationChanged не получит новые местоположения).

Но таким образом, предполагая, что этот поток остановится и приостановится методы устарели, что было бы хорошим способом, по крайней мере в этом случае, сделать нить с плашкой петлителя?

Заранее спасибо;)

9
задан Carl Manaster 4 December 2015 в 23:32
поделиться