【发布时间】:2012-02-23 19:58:46
【问题描述】:
好吧,让我解释一下我在做什么,然后我有几个问题。
说明
我正在开发一个应用程序,该应用程序将使用一项服务每隔 1-10 分钟检查一次我的网页是否有更新。所以在 ACTION_BOOT_COMPLETED 上,MyReceiver(Broadcast Receiver) 被触发,如果它是一个 ACTION_BOOT_COMPLETED 广播,它会启动一个名为 BootService 的服务。 BootService 然后设置一个触发 MyReceiver 的 AlarmService,然后 BootService 被终止。当警报广播进入 MyReceiver 时,它会触发另一个名为 UpdateService 的服务,该服务将以 BootService 设置的任何时间间隔检查互联网。
我有一个名为 BootService 的服务,因为每次启动我的应用程序时,它都会启动 BootService 以确保 AlarmService 正在运行,以防万一它因任何原因而终止。
当我发出 HTTPClient 请求时,我希望它受到登录保护,所以我试图做的是每当 BootService 运行时,它都会向我的网站发起 HTTPClient 请求,登录并存储我将使用的会话 ID在更新服务中。但是,当我将 HTTPClient 请求放入 BootService 时,我得到一个 ANR(应用程序无响应)。我尝试将 HTTPClient 请求放入 AsyncTask 中,但仍然存在问题。
问题
如果我取消 BootService 而是让 MyReceiver 设置一个 AlarmService 会更好吗?每当有人加载应用程序时,就会再次发送广播以启动警报?
什么可能导致在 HTTPClient 请求期间锁定我的程序并强制执行 ANR 的所有阻塞?我怎样才能正确实现我的 HTTPClient 请求,这样它就不会阻止我的服务?
登录/cookie 存储方法的任何好的示例。以及稍后使用会话 ID 发出未来请求的服务?
【问题讨论】:
标签: android service asynchronous httpclient