android - IntentService 内的处理程序

标签 android handler intentservice

我正在使用 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/

相关文章:

android - 不要在 appwidget 的 gridview 中的 imageview 中显示图像

android - Stripe 结账模态键盘覆盖小型设备上的输入和支付按钮

python - 在 Google App Engine 中处理多个 URL 脚本

http - 自定义 Go 的 http 库中的现有处理程序

java - intentservice 没有空的构造函数,但是有一个构造函数

java - 避免 Android 多次垃圾收集调用的高效循环

java - 删除 SQLite DB 表中的最后一个元素

javascript - 查询/JavaScript : Is possible to know when page is focussed?

Android Thread、AsyncTask 与从 BLE onCharacteristicChanged() 调用的 IntentService

android - 从 intentservcie 回调到 jobservice