У меня есть 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(...)
после запуска задачи. Itseems работать.
Но это определенно не кажется чистым решением. Возможно, есть и некоторые серьезные проблемы.
Любое лучшее решение?