Warten auf asynchronen Rückruf im IntentService von Android

ich habe einIntentService Das startet eine asynchrone Aufgabe in einer anderen Klasse und sollte dann auf das Ergebnis warten.

Das Problem ist, dass dieIntentService wird beendet, sobald dieonHandleIntent(...) Methode ist beendet, richtig?

Das bedeutet normalerweise dieIntentService wird sofort nach dem Start der asynchronen Task heruntergefahren und ist nicht mehr da, um die Ergebnisse zu erhalten.

public class MyIntentService extends IntentService implements MyCallback {

    public MyIntentService() {
        super("MyIntentService");
    }

    @Override
    protected final void onHandleIntent(Intent intent) {
        MyOtherClass.runAsynchronousTask(this);
    }

}

public interface MyCallback {

    public void onReceiveResults(Object object);

}

public class MyOtherClass {

    public void runAsynchronousTask(MyCallback callback) {
        new Thread() {
            public void run() {
                // do some long-running work
                callback.onReceiveResults(...);
            }
        }.start();
    }

}

Wie kann ich das obige Snippet zum Laufen bringen? Ich habe es schon versuchtThread.sleep(15000) (willkürliche Dauer)onHandleIntent(...) nach dem Start der Aufgabe. Es scheint zu funktionieren.

Aber es scheint definitiv keine saubere Lösung zu sein. Vielleicht gibt es sogar ernsthafte Probleme damit.

Irgendeine bessere Lösung?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage