Estoy usando un IntentService para manejar las comunicaciones de red con un servidor a través de JSON. La parte JSON/servidor funciona bien, pero tengo problemas para volver a obtener los resultados donde se necesitan. El siguiente código muestra cómo estoy comenzando el servicio de intento desde dentro de OnClick(), y luego hago que el servicio actualice una variable global para retransmitir los resultados a la actividad principal.¿Cómo obtener resultados de un IntentService en una actividad?
public class GXActivity extends Activity {
private static final String TAG = "GXActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
// === called when the activity is first created
Log.i(TAG, "GXActivity Created");
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
View.OnClickListener handler = new View.OnClickListener() {
public void onClick(View v) {
// === set up an application context to hold a global variable
// === called user, to contain results from the intent service
GXApp appState = ((GXApp) getApplicationContext());
User user = new User(-1); // initialize user id to -1
appState.setUser(user);
// === next start an intent service to get JSON from the server;
// === this service updates the user global variable with
// === results from the JSON transaction
Intent intent = new Intent(this, GXIntentService.class);
startService(intent);
// === check app context for results from intent service
appState = ((GXApp) getApplicationContext());
if (appState.getUser().getId() != -1)...
}
}
}
}
El problema que estoy teniendo es que el servicio que analiza la intención JSON no consigue invocar hasta después onCreate() completa, por lo que mi código que está en busca de los resultados se ha quedado atascado viendo resultados sin inicializar.
¿Qué debo hacer de manera diferente para que se llame al servicio de intención antes de verificar los resultados? ¿Funcionaría si sacara el oyente click de la función onCreate()? ¿Hay otro/mejor para estructurar este código? Muchas gracias.
vea esto puede ser útil http://stackoverflow.com/a/9089086/985143 –