1.Service 与 IntentService区别:
-
Service不是运行在独立的线程,所以不建议在Service中编写耗时的逻辑和操作,否则会引起ANR。
-
IntentService
1.可用于执行后台耗时的任务,任务执行后会自动停止。
2.具有高优先级,适合高优先级的后台任务,且不容易被系统杀死。
3.可以多次启动,每个耗时操作都会以工作队列的方式在IntentService的onHandleIntent回调方法中执行。
2.IntentService的使用:
3.源码角度看一看
然后我们再来看看源码是怎么实现的:
-
第一:
在IntentService的onCreate()中我们可以看到:
首先是创建了一个HandlerThread线程,然后启动线程。
然后再通过这个线程里的Looper创建了一个Handler。
所以这个ServiceHandler是在子线程中执行的。【所以IntentService可用于执行后台耗时的任务】
-
第二:
在onStart