2

我正在使用一个IntentService从 Internet 下载一些东西到我的Android app. 我也在使用http://loopj.com/android-async-http/ httpClient,这也是async.

我遇到的问题是,当我触发下载async调用时,IntentService线程完成并且http客户端无法回调响应,因为Service线程已死。

我使用过这样的处理程序,它似乎可以工作,但我对 loppers 有点迷茫。它是否正确?我可以安全地使用此代码吗?

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

2 回答 2

3

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

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

您尝试实施的解决方法与意图服务的性质相反,意图服务是简单的工作线程,在处理意图后到期。

于 2012-08-27T15:20:24.627 回答
0

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

下载异步调用

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

于 2012-08-27T12:50:01.327 回答