如何在Android中使用服务功能

时间:2013-07-09 11:26:22

标签: android multithreading service android-activity communication

我是Android开发新手,无法理解我应该如何使用service's,更具体地说是哪种。我正在开发一个只对事情有用的简单系统。其中一个是不断向服务器询问简单的telnet个问题。应在屏幕上提示这些问题的答案。

所以简化我的问题。我应该选择什么样的服务?绑定,intent service等?

我认为它必须运行一个自己的线程,因为它假设要进行网络通信,所以我应该怎么做。

最后也是最重要的一点,我如何提供/提供服务收集的MainActivity信息并将其发布在屏幕上?

2 个答案:

答案 0 :(得分:1)

  

我应该优先选择什么样的服务?绑定,意图服务等?

只要绑定了另一个应用程序组件,绑定服务就会运行。换句话说,如果活动绑定到该服务,并且稍后该活动完成,则该服务也会被销毁 因此,首先要确定您想要的服务的行为。当绑定到它的活动被破坏时,你想要它被销毁吗?如果是,那么可能绑定服务是正确的,如果没有,那么使用已启动的服务,它可以无限期地在后台运行,即使启动它的组件被销毁。

  

我认为它必须运行自己的线程,因为它假设要做网络   comm,那我该怎么办呢。

是的,你是对的。您可以使用Service类并在其中创建一个可以完成繁重工作的线程,或者,您可以使用提供自己的工作线程的IntentService来简化操作。

  

最后也是最重要的是,我如何提供/提供MainActivity   服务收集的信息?

如果您决定使用绑定Service,那么您将能够通过所谓的绑定对象与服务进行通信。另一方面,如果您使用IntentService,则可以使用ResultReceiverBroadcastReceiver将结果发回。

建议读物:
http://developer.android.com/guide/components/services.html
http://developer.android.com/guide/components/bound-services.html

答案 1 :(得分:0)

以下是Android中服务的快速摘要,希望这有助于决定采用何种方法。强烈建议阅读Android Services

Android服务

  • “服务是一个可以执行长时间运行的应用程序组件 在后台运行并且不提供用户界面“
  • 在主(UI)应用程序线程上运行。
  • 优先考虑资源终止时的活动 很低
  • 它不打算直接与活动/片段交互(活动可能在任何时候被销毁)没有简单的回调能力由于上述...但是有一些方法可以使用Intents,Handlers和Messages < / LI>
  • 一个活动可以绑定到一个服务 基本上给出了一个调用方法的服务实例,方法将在主线程上运行,建议使用单独的线程的方法,就是使用Executors