我正在使用IntentService
将某些内容从互联网下载到我的Android app
。
我还使用http://loopj.com/android-async-http/ httpClient
,也是async
。
我遇到的问题是当我触发下载async
调用时,IntentService
线程完成,而http
客户端无法使用响应进行回调,因为Service
线程已经死了。
我使用过像这样的处理程序似乎有效,但我对于修剪器有点迷失。它是否正确?我可以安全地使用这个代码吗?
new Handler(getMainLooper()).post(new Runnable() {
@Override
public void run() {
//my downloading code here
}
}));
答案 0 :(得分:3)
Intent Service本身提供后台线程,因此您应该在其onHandleIntent方法中执行直接的http调用,并通过广播与您的活动进行交互。
另一方面,我从未使用过loopj,但它看起来提供了你需要的所有异步性。我会问自己为什么我需要在一个intentservice中使用它。如果您需要在应用程序后台运行时运行它,更好的解决方案是在更经典的服务中使用它。
您尝试实施的解决方法违反了intentservices的性质,这是在处理意图后过期的简单工作线程。
答案 1 :(得分:0)
是的,因为你的
似乎是安全的下载异步电话
将在单独的线程上工作(最有可能)。