通过与Android应用程序中的活动进行通信来分离线程后台服务

时间:2015-03-06 10:44:10

标签: android multithreading broadcastreceiver android-service android-broadcast

我是一位经验丰富的Web开发人员,但我对Android SDK和Java都不熟悉。我对Android应用程序中的后台操作和多线程有一个概念问题。

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

所以这个想法如下:

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

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

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

  4. 当然,我不是在寻找一个完整的解决方案,只是为了向经验丰富的专业人士提供一些我应该使用的API组件的提示。

    特别是,我对在单独的线程中运行服务并同时与活动进行通信的安全方式感兴趣。任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:4)

逐点回答你的问题:

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

2。要执行HTTP请求,您可以使用IntentService a ServiceAsyncTask。< / p>

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