使用服务进行长网络连接

时间:2012-06-08 20:19:10

标签: android android-service android-networking

现在我在桌面上运行了一台服务器。我希望能够启动我的应用程序,点击按钮开始从该服务器收集数据,并且只有在我再次按下按钮时才停止。即使应用程序未处于活动状态,用户也应始终在按下按钮后从此服务器获取数据。到目前为止,我已经考虑过自己设置服务或使用线程。

服务听起来完全像我需要的那样,但我被告知这并不意味着维持长时间的网络连接。我浏览了BluetoothChat示例应用程序并且它没有使用服务。服务是否是正确使用的,或者我应该使用像示例应用程序那样的线程来实现它?我需要长连接的唯一原因是从服务器侦听任何错误报告。其他网络内容仅在用户直接使用应用程序时发生。我将不得不使用线程,因为一个服务在与调用它的活动相同的线程中运行,但我想我的主要问题是我是否应该废弃服务部分。现在我有一个基本的服务设置,可以处理发送给它的消息,它似乎很容易使用。关于它的文档到处都是,需要有一节说“如果你想做X,那么建议这样做!”

1 个答案:

答案 0 :(得分:1)

服务在UI线程上运行,但IntentService在自己的线程中运行。

说“app”不活跃是不明确的。如果您正在运行服务,它始终处于活动状态。只要IntentService在其onHandleIntent()方法中完成了工作,它就处于活动状态。应用程序的所有活动都不是活动的,这意味着应用程序在后台。

除此之外,我还需要了解更多关于你要做什么的事情。通常,最好是循环收集数据,而不是试图保持连接不断打开。例如,当设备失去与Internet的连接时,您会怎么做?