与 Android 应用程序中的 activity 通信的独立线程后台服务

Separate thread background service with communication with activity in Android application

我是一位经验丰富的 Web 开发人员,但我对 Android SDK 和 Java 还很陌生。我有一个关于 Android 应用程序中的后台操作和多线程的 概念性 问题。

我要开发一个应用程序,它有一个持续工作的后台服务(它将通过 HTTP 与远程服务器通信)。此外,我将有一个 activity 应该显示服务的某些状态,例如当前操作和状态。

所以思路如下:

  1. WIFI连接上时服务启动,WIFI断开时服务停止。换句话说,它应该只在有活动的无线连接时工作。我想我需要实现某种事件处理程序才能这样做。

  2. 该服务应 运行 在单独的线程中运行,以免阻塞 UI 线程。

  3. Activity 应该能够连接到服务并从中动态接收状态。

当然,我并不是在寻找一个完整的解决方案,只是想从经验丰富的专业人士那里得到一些提示,告诉我应该使用哪些 API 组件。

特别是,我对在单独的线程中 运行 服务并同时与 activity 通信的安全方法感兴趣。任何建议将不胜感激。

逐点回答你的问题:

1. 创建一个拦截 WIFI_STATE_CHANGED 广播的自定义 BroadcastReceiver。当连接可用时,在单独的 ServiceonReceive() 方法中启动 HTTP 请求。

2. 要执行 HTTP 请求,您可以使用 IntentService Service AsyncTasks.

3. 使用一个bound Service。这实际上不是此类问题的最佳解决方案,但它是一个很好的起点,可以在以后进行完善。