Ожидание асинхронного обратного вызова в Android IntentService
у меня естьIntentService
которая запускает асинхронную задачу в другом классе и должна ждать результата.
Проблема в том, чтоIntentService
закончится, как толькоonHandleIntent(...)
метод закончил работу, верно?
Это означает, что обычноIntentService
немедленно выключится после запуска асинхронной задачи и больше не будет там для получения результатов.
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();
}
}
Как я могу сделать приведенный выше фрагмент? Я уже пробовал ставитьThread.sleep(15000)
(произвольная продолжительность) вonHandleIntent(...)
после запуска задания. Это похоже на работу.
Но это определенно не кажется чистым решением. Может быть, есть даже серьезные проблемы с этим.
Есть лучшее решение?