多线程—IntentService
2020-02-10 本文已影响0人
似焰如火
1 说说IntentService的背景
没错,IntentService的背景就是Service。它继承了Service,在此基础上升级了功能,那就是IntentService会启动新的线程处理任务,它内部通过HandlerThread和Handler实现异步操作。
2 IntentService特征总结
- 创建单独的worker线程,onHandleIntent()方法处理Intent请求,创建IntentService时,只需实现onHandleIntent和构造方法,onHandleIntent为异步方法,可用于执行耗时任务;
- 请求处理完成,IntentService自动结束,无需手动停止;
- 为Service的onBind()方法提供默认实现,其返回为null,创建IntentService时,无需重写该方法;
- 为Service的onStartCommand()方法提供默认实现,该实现会将Intent请求添加到队列中,创建IntentService时,无需重写该方法。
3 IntentService 使用
IntentService的使用三步走,首先创建TaskService继承IntentService;然后重新onHandleIntent方法,实现业务逻辑;最后使用startService方法启动TaskService。具体代码如下:
// 1. 继承
public class TaskService extends IntentService {
@Override
protected void onHandleIntent(@Nullable Intent intent) {
// 2.实现业务逻辑
}
}
// 3.开启服务
startService(new Intent(this, TaskService));