Wie bekomme ich Ergebnisse aus einem IntentService zurück in eine Aktivität?

Ich bin mit einem IntentService zur Verarbeitung von Netzwerk-Kommunikation mit einem server über JSON. Die JSON - /server-Teil ist in Ordnung, aber ich habe Probleme dabei, die Ergebnisse zurück, wo Sie benötigt werden. Der folgende code zeigt, wie ich die Absicht Dienst von innen onClick(), und dann mit der service-update eine Globale variable zu geben die Ergebnisse zurück an die zentrale Aktivität.

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)...

            }
        }
    }
}

Das problem das ich habe ist, dass der Vorsatz service Parsen der JSON nicht aufgerufen, bis nach der onCreate () - abgeschlossen, also mein code sieht für die Ergebnisse ist, stecken suchen, auf nicht initialisierten Ergebnisse.

Was sollte ich anders machen, so die Absicht-service wird aufgerufen, bevor ich die Ergebnisse überprüfen? Würde es funktionieren, wenn ich zog die Klick-listener aus der onCreate () - Funktion? Gibt es eine andere/bessere Struktur dieser code? Vielen Dank.

Kommentar zu dem Problem
dies sehen, kann es hilfreich sein, stackoverflow.com/a/9089086/985143 Kommentarautor: Zaz Gmy

InformationsquelleAutor der Frage gcl1 | 2012-04-26

Schreibe einen Kommentar