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

时间:2017-02-06 15:15:01

标签: android session service intentservice keep-alive

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

2 个答案:

答案 0 :(得分:4)

你必须使用服务,因为它会一直存在,直到你停止它。另一方面,IntentService在失去工作时就会自动停止。

答案 1 :(得分:0)

IntentService是特殊的Service,完成任务后就完成了自己。

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

因此,如果您想永远运行某些内容并且还想与其他Activity进行通信,那么您应该使用Service

但请考虑以下因素:

  1. Service在与主线程相同的线程中运行,但在后台运行,因此服务中的大量操作可能会影响您的应用程序性能。 IntentService在与主线程线程分开的工作线程中运行。

  2. Service你有责任开始和停止它,否则它将无限期地运行。 IntentService在任务完成时自行停止。

  3. 通常IntentService用于长时间运行的任务,而Service用于不太长的任务。

  4. 如果需要与Activity通信,可以将Service绑定到活动。 IntentService可用于没有与主线程通信的任务。如果需要通信,可以使用主线程处理程序或广播意图。另一种使用情况是需要回调(Intent触发任务)。

  5. IntentService无法并行运行任务。因此,所有连续的意图将进入工作线程的消息队列,并将按顺序执行。

  6. 因此,如果你在后台进行繁重的操作并且不需要与主线程进行通信,那么你需要使用IntentService,否则需要将结果传递给主线程,后台任务不会太重,那么你可以与Service一起使用。