我正在使用 IntentService
将某些内容从 Internet 下载到我的 Android 应用
。
我也在使用http://loopj.com/android-async-http/ httpClient
,也是异步
。
我遇到的问题是,当我触发下载async
调用时,IntentService
线程完成,并且http
客户端无法使用响应,因为 Service
线程已死亡。
我使用过这样的处理程序,它似乎有效,但我对剪枝器有点迷失。它是否正确?我按原样使用此代码安全吗?
new Handler(getMainLooper()).post(new Runnable() {
@Override
public void run() {
//my downloading code here
}
}));
最佳答案
Intent Service 本身提供一个后台线程,因此您应该做的是在其 onHandleIntent 方法中直接进行 http 调用,并通过广播与您的 Activity 进行交互。
另一方面,我从未使用过loopj,但它看起来提供了开箱即用的所有异步性。我会问自己为什么需要在 Intent 服务中使用它。如果您需要在应用程序处于后台时运行它,更好的解决方案是在更经典的服务中使用它。
您尝试实现的解决方法违反了 Intent 服务的本质, Intent 服务是简单的工作线程,在处理 Intent 后会过期。
关于android - IntentService 内的处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12142167/