петля.

дал класс, расширяющий поток, чтобы получить местоположение пользователя через 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 не получит новые местоположения).

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

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

Ответы на вопрос(5)

Ваш ответ на вопрос