2012-08-27 63 views
1

我使用的是IntentService从Internet上下载到我的Android app。 我也在使用http://loopj.com/android-async-http/httpClient,这也是async内部处理程序IntentService

我的问题是,当我火下载async调用,IntentService线程完成和http客户端无法与响应回调,因为Service线程已经死了。

我已经使用了一个像这样的处理程序,它似乎工作,但我有点失落关于loppers。它是否正确?我是否安全地使用这些代码?

new Handler(getMainLooper()).post(new Runnable() { 
     @Override 
     public void run() { 
      //my downloading code here 
     } 
})); 

回答

3

意向服务本身提供一个后台线程,所以你应该做的是在onHandleIntent方法中直接调用http调用并通过广播与你的活动进行交互。

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

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

+0

我开始使用IntentService,因为它很容易实现,但后来我发现这个问题。我想要保持一致,并在我的应用中随处使用loopj http异步客户端,这就是为什么我最终使用了我提到的解决方案。但是你是对的,一个经典的服务可以更好地完成这项工作。 –

+0

使用SyncHttp而不是AsynHttp,你很好去。我已经在我的应用程序中使用过。 – Ajinkya

0

是的,这似乎是安全的,因为你的

下载异步调用

在单独的线程就可以了(最有可能)。

相关问题