在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(...)
。似乎可以正常工作。
但这绝对不是一个干净的解决方案。也许甚至有一些严重的问题。
有更好的解决方案吗?
回答:
使用标准Service
类代替IntentService
,从onStartCommand()
回调启动异步任务,并Service
在收到完成回调时销毁。
与此相关的问题是,由于Service
在Service
已经运行的同时又被启动,因此在同时运行的任务的情况下,可以正确处理的销毁。如果需要处理这种情况,则可能需要设置一个运行中的计数器或一组回调,并Service
在它们全部完成后销毁它们。
以上是 在Android的IntentService中等待异步回调 的全部内容, 来源链接: utcz.com/qa/402650.html