Android10.0 Service啓動源碼解析

本文出自門心叼龍的博客,屬於原創類容,轉載請註明出處。

Service的啓動流程的還是比較簡單的,不像Activity那麼複雜,相關聯的類和方法都少了很多,不像Activity啓動流程裏面走着走着就會迷失方向,源碼分析這是加強Android內功修煉的必修課,分析了幾個流程之後,你就會覺得也不過如此,因爲他們的套路都是一樣的,大體的實現思想都是相通的,只是具體的代碼實現不同罷了。

在上一篇文章我們主要分析了Android10.0 Activity的啓動過程,今天我們主要來探索Service的啓動過程,本來打算先從5.0開始,然後在分析最新版10.0的啓動過程,結果讓我失望了,10.0的啓動過程和5.0的是方法調用鏈是一樣的,只是有些方法的代碼邏輯有些小的改動,它不像Activity的啓動流程變化那麼大,這說明當時Service啓動這塊的代碼邏輯寫的還是非常不錯的,Android已經迭代到10了經歷了那麼版本,這塊的代碼還是那麼的完美穩定,沒有什麼需要大的改造的地方,10.0中有些小變化會在下面的詳解過程會提到,既然5.0和10.0差別不大,索性就以5.0作爲研究版本寫了這篇文章。

Service是Android四大組件中排行老二,地位僅次於Activity,Activity位於前臺向用戶展示界面;Service位於後臺不可見,但是它承擔了大部分的的數據處理工作,主要爲其他組件提供後臺服務,監控其他組件的運行狀態。

Activity中的流程

Service的啓動是從Activity的startService方法開始的,這個方法是從他的父類ContextWrapper繼承而來的,下面這是Activity的繼承關係圖:
在這裏插入圖片描述
從上圖我們很清晰的看到,Ac

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章