我有一个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();
}
}
如何让上面的代码片段工作?我已经尝试在启动任务后在onHandleIntent(...)
中放置Thread.sleep(15000)
(任意持续时间)。它似乎有效。
但这肯定不是一个干净的解决方案。也许还有一些严重的问题。
有更好的解决方案吗?
MyOtherClass
实际上是第三方组件的一部分,我不太想更改它。该类中的方法始终通过回调传递其结果,而不是同步传递。 - caw