Android基础—使用IntentService

IntentService是Service的子类。我们经常遇到这样的情形:由于Service不是运行在专门的线程,所以在Service中需要处理耗的操作时,就要在Service中启动一条新的线程来处理它。但是这样有一个问题:有可能宿主进程被终止,而其中的子线程也会被终止,但是它还没有执行完成。

而IntentService可以弥补这些不足:IntentService使用队列来管理请求的Intent,每次当客户端通过Intent请求启动IntentService时,IntentService会将Intent加入队列中,然后开启一条Worker线程来处理Intent。对于异步的startService()请求,Intent会按次序一次处理队列中的请求Intent,该线程会保证同一时刻只处理一个Intent。

可以看到IntentService的主要特征是:

1,Intentservice采用单独的worker线程来处理所有的Intent请求;

2,IntentService启动的worker线程每次只传递一个intent给onHandlerIntent()的实现方法,因此不用处理多线程的问题;

3,在所有的请求处理完后,IntentService会自动停止,无需调用stopSelf()来终止Service;

4,IntentService为onBind()方法提供了默认的实现,它返回null;

5,IntentService为onStartCommand()方法提供了默认的实现,它将请求的Intent放入请求队列中。


这样我们所有的注意力就可以集中在onHandleIntent()方法上。

你可能感兴趣的:(Android基础—使用IntentService)