我希望通过Socket保持与服务器的连接。哪一个更适合这种情况?服务或IntentService?为什么呢?
答案 0 :(得分:4)
你必须使用服务,因为它会一直存在,直到你停止它。另一方面,IntentService在失去工作时就会自动停止。
答案 1 :(得分:0)
IntentService
是特殊的Service
,完成任务后就完成了自己。
Service
是一个可以无限运行的组件,虽然启动它的组件已被销毁。
因此,如果您想永远运行某些内容并且还想与其他Activity进行通信,那么您应该使用Service
。
但请考虑以下因素:
Service
在与主线程相同的线程中运行,但在后台运行,因此服务中的大量操作可能会影响您的应用程序性能。 IntentService
在与主线程线程分开的工作线程中运行。
Service
你有责任开始和停止它,否则它将无限期地运行。 IntentService
在任务完成时自行停止。
通常IntentService
用于长时间运行的任务,而Service
用于不太长的任务。
如果需要与Activity通信,可以将Service
绑定到活动。 IntentService
可用于没有与主线程通信的任务。如果需要通信,可以使用主线程处理程序或广播意图。另一种使用情况是需要回调(Intent触发任务)。
IntentService
无法并行运行任务。因此,所有连续的意图将进入工作线程的消息队列,并将按顺序执行。
因此,如果你在后台进行繁重的操作并且不需要与主线程进行通信,那么你需要使用IntentService
,否则需要将结果传递给主线程,后台任务不会太重,那么你可以与Service
一起使用。