当我必须使用IntentService
?
当我必须使用Service
?
我不知道它们是用来做什么的。
服务
这是所有服务的基类。扩展此类时,创建一个新线程来完成所有服务的工作很重要,因为默认情况下,服务使用应用程序的主线程,这可能会降低应用程序正在运行的任何活动的性能。
意向服务
这是 Service 的一个子类,它使用一个工作线程来处理所有的启动请求,一次一个。如果您不要求您的服务同时处理多个请求,这是最佳选择。您需要做的就是实现 onHandleIntent(),它接收每个启动请求的意图,以便您可以进行后台工作。
差异
服务类使用应用程序的主线程,而 IntentService 创建一个工作线程并使用该线程来运行服务。IntentService 创建一个队列,一次将一个意图传递给 onHandleIntent()。因此,实现多线程应该通过直接扩展Service类来实现。服务类需要使用 stopSelf() 手动停止。同时,当队列中没有意图时,IntentService 会自动停止。IntentService 实现了返回 null 的 onBind()。这意味着默认情况下不能绑定 IntentService。IntentService 实现了 onStartCommand(),它将 Intent 发送到队列和 onHandleIntent()。