IntentService内部的处理程序

时间:2012-08-27 12:40:45

标签: android handler intentservice

我正在使用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
        }
}));

2 个答案:

答案 0 :(得分:3)

Intent Service本身提供后台线程,因此您应该在其onHandleIntent方法中执行直接的http调用,并通过广播与您的活动进行交互。

另一方面,我从未使用过loopj,但它看起来提供了你需要的所有异步性。我会问自己为什么我需要在一个intentservice中使用它。如果您需要在应用程序后台运行时运行它,更好的解决方案是在更经典的服务中使用它。

您尝试实施的解决方法违反了intentservices的性质,这是在处理意图后过期的简单工作线程。

答案 1 :(得分:0)

是的,因为你的

似乎是安全的
  

下载异步电话

将在单独的线程上工作(最有可能)。