android intent 回调上级方法,在Android的IntentService中等待异步回调

本文讨论了如何在一个IntentService中启动异步任务并确保结果被正确接收,避免IntentService在任务完成后立即关闭。作者分享了使用MyCallback接口和非阻塞方式实现解决方案,以及使用Thread.sleep()临时解决的方法,并寻求更优雅的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个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(...)。似乎可以正常工作。

但这绝对不是一个干净的解决方案。也许甚至有一些严重的问题。

有更好的解决方案吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值