首先说一下Service本身存在的两个问题:
1.Service不会专门启动一条新的线程,Service与它所在应用位于同一个进程中。
2.Service也不是专门一条新的线程,所以不应该在Service中处理耗时的任务。
IntentService正好弥补了这两个不足:
IntentService可以处理异步请求的Service。
IntentService将会使用队列来管理请求Intent,每当客户端代码通过Intent请求启动IntentService时,IntentService
会将该Intent加入到队列中,然后开启一条新的worker线程来处理该Intent。在完成的时候会自动停止,不用手动去停止它。
IntentService的特点:
IntentService会创建单独的worker线程来处理所有的Intent请求
IntentService会创建单独的worker线程来处理onHandleIntent方法实现的代码,因此开发者不需要处理多线程问题
当所有的请求处理完成后,IntentService会自动停止,无需调用stopSelf方法来停止该Service
为Service的onBind方法提供了默认实现,默认该方法返回null
为Service的onStartCommand方法提供了默认实现,该实现会将Intent添加到队列中。
所以在继承IntentService时,不需要onBind onStartCommand 方法,只要实现onHandleIntent方法即可