Intentservice

IntentService是一个基本类,用来处理异步请求(用Intents来传递的)的服务。客户端通过调用startService(Intent)来发送请求;当需要的时候service被启动,使用一个工作者线程来依次处理每一个Intent;当任务运行完毕之后会自动关闭。这个“工作队列处理器”模式通常用来帮助处理应用的主线程中的任务。IntentService类是为了简化这个模式和照看结构而存在的。通过继承IntentService实现onHandleIntent(Intent)方法来使用它。IntentService将会接收Intents,创建一个工作者线程,并在适当的时候(任务结束的时候)停止服务。

所有的请求都被一个单独的工作者线程(HandlerThread)处理--他们或许需要足够长的时间来处理(并且不会阻塞应用的主循环),但是同一时间只能处理一个请求


使用方法

1.声明一个类继承自IntentService

2.重写onHandleIntent方法

3.在Manifest文件中注册

原理

1.从源码中可以看出IntentService中一个静态的Handler内部类


Intentservice_第1张图片

2.在IntentService的onCreate方法中创建了一个HandlerThread 对象 并启动该线程

3.启动HandlerThread之后获取当前线程r的Looper对象用于创建Handler静态内部类实例



Intentservice_第2张图片

4.在onHandleIntent方法中执行异步任务

你可能感兴趣的:(Intentservice)