在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在收到完成回调时销毁。

与此相关的问题是,由于ServiceService已经运行的同时又被启动,因此在同时运行的任务的情况下,可以正确处理的销毁。如果需要处理这种情况,则可能需要设置一个运行中的计数器或一组回调,并Service在它们全部完成后销毁它们。

以上是 在Android的IntentService中等待异步回调 的全部内容, 来源链接: utcz.com/qa/402650.html

回到顶部