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 ;