IntentServer源码解析

最近公司执行了996,工作饱和度还好,所以算是加班时间可以做些自己的事情了,整理下源码相关的东西,知其然知其所以然,本文针对IntentServer源码进行解析,由于IntentServer代码量不大,所以接下来可能直接上代码解析。
首先呢,用过IntentServer的基本都知道是继承自server的,杠精勿扰,谢谢,那么这两者有何区别,且让我们来一一看看,直接上图


image.png

先看构造函数,传入一个name,
继续


image.png

既然是继承的service,那么对照生命周期看吧,首先oncreate里面初始化了一个HandlerThread,获取到HandlerThread的looper,与serviceHandler绑定,HandlerThread代码量不大,可以看看,直接重点代码


image.png

很熟悉有没有,在run方法里面开线程,perpare(),loop()等,然后在getLooper里面获取looper,ok,继续看我们的service的方法。

onStartCommand里面调用start,在start里面 mServiceHandler.sendMessage(msg);顺便提一下mServiceHandler.obtainMessage()与直接new message()的区别可看之前文章。ok,handler.sendMessage之后我们看看handler的处理,
image.png
image.png

抽象类,我们去实现,然后处理完之后stopSelf(),至此,分析完毕。
总结下IntentService与Service的区别:
intentservice继承service,所以service有的它都有,不同点主要是intentservice有个独立的工作线程HandlerThread来处理事件,在onStartCommand里面 mServiceHandler.sendMessage(msg)传递,在onHandleIntent里面处理完成,最后自己调用stopSelft()来结束服务,所以一般比较耗时的service可以使用intentservice来替代service。

你可能感兴趣的:(IntentServer源码解析)