En mi código estoy usando un IntentService
para escuchar actualizaciones de ubicación (ya sea GPS o actualizaciones de red) y este IntentService
se activa cuando se recibe un evento, por lo que se inicia con startService()
desde cualquier actividad.IntentService: ¿Cómo poner en cola correctamente?
public class AddLocationService extends IntentService implements LocationListener {
/*My code here*/
}
@Override
protected void onHandleIntent(Intent intent) {
if(getOldLoc() == null)
{
//Get a new location
this.locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, TIME_INTERVAL_GPS, 0, this);
this.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, TIME_INTERVAL_GPS, 0, this);
Log.d(AddLocationService.TAG, "Network listener started");
this.time_start_listening = System.currentTimeMillis();
mTimerThread mTimerRunnable = new mTimerThread();
this.timerThread = new Thread(mTimerRunnable);
this.timerThread.start();
}
else
/*REUSE OLD LOCATION*/
}
Ahora mi problema es: Cuando dos eventos comienzan este IntentService
y la segunda comienza mientras el primero sigue solicitando para las actualizaciones, me gustaría que el segundo que esperar hasta primera es totalmente terminado (localización encontró O termina el hilo del temporizador). Sin embargo, cada vez que se ejecuta IntentService
por segunda vez (la primera instancia aún se está ejecutando), me imprime el registro y lo hace como se estaba ejecutando en paralelo.
Sin embargo pensé que el objetivo principal de IntentService
es que es algo secuencial por lo que un segundo intento tendría que esperar hasta el primero de ellos se hace ...
¿He Missunderstood algo?
Hola @Rob, Gracias por responder. ¿Podría ser más específico cuando dice que el método 'onHandleIntent' no está bloqueando el hilo? ¿Qué debo hacer para bloquearlo? ¿Tiene algo que ver con Flags al crear la intención de otra actividad o es algo que debería hacer en el método 'onHandleIntent()'? – Pom12
EDIT: Creo que entiendo lo que quiere decir: mi IntentService regresa mientras sigue solicitando actualizaciones. ¿Cómo puedo mantenerlo bloqueado? ¿El dúo 'wait() - notify()' sería una buena idea? – Pom12
Tipo de, he actualizado mi respuesta con más información sobre cómo solucionarlo – Rob