服务或IntentService哪种方法更适合在android中与服务器保持活动会话

问题描述 投票:1回答:2

我希望通过Socket保持与服务器的连接。哪一个更适合这种情况?服务或IntentService?为什么?

android session service intentservice keep-alive
2个回答
4
投票

你必须使用一个服务,因为它会保持活着,直到你停止它。另一方面,当IntentService用完工作时,它会停止运行。


0
投票

IntentService是特殊的Service,完成任务完成。

Service是一个可以无限运行的组件,虽然启动它的组件被销毁。

因此,如果你想永远运行一些东西,并且你想与其他Activity进行交流,那么你应该选择Service

但请考虑以下因素:

  1. Service在与主线程相同的线程中运行,但在后台运行,因此服务中的大量操作可能会影响您的应用程序性能。 IntentService在与主线程线程分开的工作线程中运行。
  2. 有了Service你有责任开始和停止它,否则它将无限期地运行。 IntentService在完成任务时停止运作。
  3. 通常IntentService用于长时间运行任务,而Service用于不太长的任务。
  4. 如果需要与Activity通信,可以将Service绑定到活动。 IntentService可用于与主线程无通信的任务。如果需要通信,可以使用主线程处理程序或广播意图。另一种使用情况是需要回调时(Intent触发的任务)。
  5. IntentService无法并行运行任务。因此,所有连续的意图将进入工作线程的消息队列,并将按顺序执行。

因此,如果你在后台进行繁重的操作并且你不需要与主线程进行通信,那么你使用IntentService或者结果需要传递给主线程,后台任务不是太重,那么你可以使用Service

© www.soinside.com 2019 - 2024. All rights reserved.