与 Android 应用程序中的 activity 通信的独立线程后台服务
Separate thread background service with communication with activity in Android application
我是一位经验丰富的 Web 开发人员,但我对 Android SDK 和 Java 还很陌生。我有一个关于 Android 应用程序中的后台操作和多线程的 概念性 问题。
我要开发一个应用程序,它有一个持续工作的后台服务(它将通过 HTTP 与远程服务器通信)。此外,我将有一个 activity 应该显示服务的某些状态,例如当前操作和状态。
所以思路如下:
WIFI连接上时服务启动,WIFI断开时服务停止。换句话说,它应该只在有活动的无线连接时工作。我想我需要实现某种事件处理程序才能这样做。
该服务应 运行 在单独的线程中运行,以免阻塞 UI 线程。
Activity 应该能够连接到服务并从中动态接收状态。
当然,我并不是在寻找一个完整的解决方案,只是想从经验丰富的专业人士那里得到一些提示,告诉我应该使用哪些 API 组件。
特别是,我对在单独的线程中 运行 服务并同时与 activity 通信的安全方法感兴趣。任何建议将不胜感激。
逐点回答你的问题:
1. 创建一个拦截 WIFI_STATE_CHANGED
广播的自定义 BroadcastReceiver
。当连接可用时,在单独的 Service
的 onReceive()
方法中启动 HTTP 请求。
2. 要执行 HTTP 请求,您可以使用 IntentService
或 和 Service
AsyncTask
s.
3. 使用一个bound Service
。这实际上不是此类问题的最佳解决方案,但它是一个很好的起点,可以在以后进行完善。
我是一位经验丰富的 Web 开发人员,但我对 Android SDK 和 Java 还很陌生。我有一个关于 Android 应用程序中的后台操作和多线程的 概念性 问题。
我要开发一个应用程序,它有一个持续工作的后台服务(它将通过 HTTP 与远程服务器通信)。此外,我将有一个 activity 应该显示服务的某些状态,例如当前操作和状态。
所以思路如下:
WIFI连接上时服务启动,WIFI断开时服务停止。换句话说,它应该只在有活动的无线连接时工作。我想我需要实现某种事件处理程序才能这样做。
该服务应 运行 在单独的线程中运行,以免阻塞 UI 线程。
Activity 应该能够连接到服务并从中动态接收状态。
当然,我并不是在寻找一个完整的解决方案,只是想从经验丰富的专业人士那里得到一些提示,告诉我应该使用哪些 API 组件。
特别是,我对在单独的线程中 运行 服务并同时与 activity 通信的安全方法感兴趣。任何建议将不胜感激。
逐点回答你的问题:
1. 创建一个拦截 WIFI_STATE_CHANGED
广播的自定义 BroadcastReceiver
。当连接可用时,在单独的 Service
的 onReceive()
方法中启动 HTTP 请求。
2. 要执行 HTTP 请求,您可以使用 IntentService
或 和 Service
AsyncTask
s.
3. 使用一个bound Service
。这实际上不是此类问题的最佳解决方案,但它是一个很好的起点,可以在以后进行完善。