El IntentService termina cuando termina el onHandleIntent (salvo que se haya puesto a ejecutarse otro IntentService igual antes de que ese IntentService termine, en ese caso caso se volverá a ejecutar el onHandleIntent otra vez para el Intent nuevo), es decir, antes de que se ejecute el onConnected porque el código del LocationClient se ejecuta cuando el onHandleIntent termina.
Es un poco lioso, pero llevo 2 semanas peleándome con IntentServices y los tengo bastante trillados.
Yo tengo que hacer una cosa parecida, necesito una respuesta de un BroadcastReceiver para continuar la ejecución, y lo que hago es lo siguiente:
Creas un AtomicBoolean a nivel global, lo inicias a false, y justo después de iniciar el LocationClient haces:
do {
Thread.sleep(1000);
} while (!gpsIniciado.setAndCompare(true,false);
Y en el onConnected haces:
gpsIniciado.set(true);
De todas formas aún con todo esto, no se si el IntentService es lo más apropiado para lo que quieres hacer, sin conocer en detalle tu aplicación es muy probable que con un AsyncTask sea suficiente.
|