IntentService源码分析

2018-09-16  本文已影响0人  愤怒的板蓝根

首先 先上图

这里面的方法其实不多 我们先来一个一个的看   首先是ServiceHandler

它继承Handler   然后再handleMEssage中 处理方法 onHandleIntent 是一个抽象方法 这个方法的解释是 一次只执行一个任务不会像service一样 有多个后台服务 我们接着往下看

这个方法里面使用了一个HandlerTread (可以看我关于HandlerTread的源码分析)线程来处理这些任务 

重写了这些方法  先从STAR方法说起  通过HANDLER的享元设计模式 获取了一个MESSAGE对象然后发送消息

第二个 onStartCommand方法 做了一个判断 第一个表示如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。

第二个的常量 解释为   “非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。

后面两个方法就没没必要解释了  这次源码分析就到此为止

上一篇下一篇

猜你喜欢

热点阅读