####IntentService是什么?
IntentService继承自Service,所以IntentService也是四大组件之一,IntentService内部封装了HandlerThread线程 (只有一个线程) 来按顺序处理异步任务,通过startService(Intent) 来启动IntentService并通过Intent来传递异步任务,当任务结束后IntentService通过*stopSelf(int startId)来自己停止服务。IntentService是一个抽象类,如果想使用IntentService,首先创建一个类继承IntentService,然后重写onHandleIntent(Intent)*在子线程中处理Intent传过来的任务。
IntentService特点:
- onHandleIntent(Intent)发生在子线程,不能直接更新UI,需要先把结果发到Activity中
- 提交的任务顺序执行,如果一个任务A正在IntentService中执行,此时发送另一个异步任务B到IntentService中,那么必须等到任务A执行完之后任务B才会开始执行
- 已经在IntentService中执行的任务是不会被打断的
####IntentService使用例子
先上效果图:
可以看到,我们先启动了第1个任务,当第1个任务还没有执行完时,此时又启动了第2个任务,第2个任务不会立即执行,而是等到第1个任务下载到100%完成之后才会开始第2个下载任务,这就验证了IntentService会顺序执行异步任务,来看具体实现,首先继承一个IntentService并覆写onHandleIntent():
public class MyIntentService extends IntentService {
public static final String ACTION_ONE = "action_one";
public static final String ACTION_TWO = "action_two";
private int progressOne, progressTwo;
@Overr