Android應用層源碼閱讀筆記--Application
導言
在這個年頭,問到看過android 源碼沒?必定問的就是你是否看過android linux層的代碼,你說沒看過,都貌似不好意思說自己學過android的.我就想了,android linux層的代碼對於一個沒搞過linux,c/ c++的人來說,對於一個從c#,java,python,js 轉過來學android的人來說對於他們有啥意義?難道我會用 gcc 編譯一段 c語言,然后在內核上打上一個patch實現一個關機鬧鍾才是真正的會android ?能力有限,就做下應用層的源碼筆記.
一個程序的開始---Application
什么?一個程序的開始是activity?好吧,不跟你爭論,咱們來看下源代碼是怎么處理.
Application 的源碼傳送門 https://github.com/android/platformframeworksbase/blob/master/core/java/android/app/Application.java
Applcation 這個可以說的上是我們android 應用程序的開始,不管你之前知不知道這個類,它都默默的完成了android程序的初始化工作...接着就開始了我們的activity. 源碼還是很好懂的: private ArrayList<ComponentCallbacks> mComponentCallbacks = new ArrayList<ComponentCallbacks>();
private ArrayList<ActivityLifecycleCallbacks> mActivityLifecycleCallbacks = new ArrayList<ActivityLifecycleCallbacks>();
在代碼的最后還有兩個獲得所有回調的方法 collectXXXXXXXX()這個很好懂不作解釋
application 用了兩個arraylist 進行我們組件和activity生命周期的管理,我們再來看下(在哪里看?上面的傳送門不去?)ActivityLifecycleCallbacks ,是不是很熟悉!不就是我們一開始學的activity的玩意了,所有的開始就是從這里定義的了. 接下來就是對組件的注冊和移除,這個不用說各位一定能看得明白.
接下來看下內部api!
除了一開始的 attach,你會看得剩下的都是一堆dispatch XXX 開頭的方法,這會你查下字典的話,你就發現,就是有"調度,分配"的意思,這些api就是控制我們所有!activity的開始就是處這里開始的了!
沒了..
從application開始看源代碼的話,不會感覺到那么絕望,建議讀應用層的從這里開始,收獲一下自信心..下一次,咱們來說說android 應用核心部分:Context是個什么玩意..